1.@捕获异常(try-catch-finally)
@声明异常(throws)
@抛出异常(throw)
2.所有的例外都直接或间接地继承自Throwable类
@Error :由Java虚拟机生成并抛出,Java程序不做处理
@Runtime Exception :Java虚拟机在运行时生成的例外,如被0除等系统错误、数组下标超范围等,用户可不做处理
@Exception :一般程序中可预知的问题,Java程序必须捕获或声明所有的非运行时异常
3.一个示例:
public static void main(String[] args) { try { testThrowable(); } catch (Throwable t) { t.printStackTrace(System.err); } } … static void testThrowable() throws Throwable{ throw new Throwable(); }
4.@catch(Exception e) 捕获所有Exception
@catch(Throwable t) 捕获Exception和Error
5.finally代码段中应该把可能产生例外的语句用try-catch保护起来
6.字节流 示例:把输入流中的所有内容复制到输出流中
public void copy(InputStream in, OutputStream out) throws IOException{ byte[] buf = new byte[4096]; int len = in.read(buf); //读多个字节到数组中 while (len != -1) { //返回-1,表明流结束 out.write(buf, 0, len); //将数组buf中从0位置开始,长度为len的数据输出到流中 len = in.read(buf); } }
7.要使用过滤流,首先必须把它连接到某个输入/输出流上
@BufferedInputStream bin = new BufferedInputStream (new FileInputStream (“file1.txt”),256);
@DataInputStream dis = new DataInputStream (new FileInputStream ("file1.txt"));
8.对象流的例子:
public class Objectser{ public static void main(String args[]){ Student stu=new Student(981036, “Li Ming”, 16, “CSD”); try{ FileOutputStream fo = new FileOutputStream(“data.ser”); ObjectOutputStream so = new ObjectOutputStream(fo); so.writeObject(stu); so.close(); } catch(Exception e){ System.out.println(e) ; } } }
9.字符流例子:InputStreamReader ir = new InputStreamReader ( new InputStream ( ), “8859_1”);
10.网络基本概念:@TCP/IP网络参考模型包括五个层次:应用层、传输层、网络层、链路层、物理层
@OSI网络参考模型包括七个层次:应用层、表示层 、会话层 、传输层、网络层、链路层、物理层
11.TCP~打电话;UDP~发电报
12.Java.net 包中的主要类:
面向IP层的类:InetAddress (Inet4Address,Inet6Address)
如:InetAddress pku = InetAddress.getByName(“www.pku.edu.cn”);
面向应用层的类:URL、URLConnection
面向网络层的类:
TCP协议相关类:Socket、ServerSocket
UDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket
13.复习作业:简单聊天系统和二叉树