java异常处理

按照我们异常处理的知识,如果一个方法通过throws抛出了异常,那么可以在抛出异常的方法中不使用try...catch,
但是在调用这个方法的地方必须有try...catch来处理。


然而:

运行时异常:RunTimeException,此异常可以选择处理或不处理。可直接抛出throw new RuntimeException


编译时异常即Exception一定要选择处理,否则不能运行其下的代码。


try{
}catch{}块中若有多个catch块,则会先准确查找异常,在查找不到的情况下若存在exception则会输出其中的语句。

子类抛出的异常必须小于等于父类抛出的异常。


一些常见的异常类:

classNotFindException异常可能是没有导入包

BindException异常,端口已被占用

ConcurrenModificationException异常,在迭代或增强for循环的过程中对集合里的元素进行操作会报错。

NotSerializableException(所调用的类没有实现Serializable接口)
网络传输 远程方法调用或者写到硬盘上时需要使用Serializable序列化

ObjectOutputStream(用于输出对象)输出的对象必须实现这个接口的(若没实现这接口则会报错)

 StreamCorruptedException:调用getInputStream方法就会读取标示头信息。用缺省的serialization的实现时,
   一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应.
   ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.
   因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.
   所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
   因此在用Socket时要注意着一点。


//将异常信息存储到一个文件中去,PrintStream本身无叠加内容的功能,因此要以FileOutputStream来叠加内容。
File file = new File("F:\\a.txt");
FileOutputStream output = new FileOutputStream(file, true);
PrintStream print = new PrintStream(output);
try{
String str=null;
System.out.println("字符个数:"+ str.length());
int result  = 4/0; 
System.out.println(result);
}catch(Exception e){
e.printStackTrace(print);
}



如何自定义异常类: 自定义一个类继承Exception即可。


//自定义一个异常类,当sun公司定义的异常类不能满足要求时,可自定义异常

//自定义不存在ip地址的异常类,需要继承Exception类,并且调用父类的构造方法

class NoIPException extends Exception{

public NoIPException(String message){
super(message); //调用了父类一个参数的构造函数
}
}


class Demo4 
{
public static void main(String[] args) 
{
try{
feiQ(null);//传输一个空的ip过去,模拟ip不存在时的情况
}catch(NoIPException e){
e.printStackTrace();
System.out.println("马上就插上网线!!");
}
}


public static void feiQ(String ip) throws NoIPException{
if(ip==null){
throw new NoIPException("没有插网线啊,小白");
}
System.out.println("好友列表是....");
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值