java异常学习一

本文详细介绍了Java中的异常处理机制,包括异常的概念、分类、处理方式及自定义异常的实现方法。探讨了不同类型的异常及其应对策略,如Error、Exception等,并提供了实际的代码示例。



异常就是程序运行是出现的不正常情况
异常由来:问题也是现实生活中的一个具体的事物,也可以通过java的类的形式进行描述 并封装成对象。其实就是java对不正常情况进行描述后的对象体现。

对于问题的划分:严重问题和非严重问题。
对于严重问题。java通过Error类进行描述。对于Error一般不编写针对性的代码对其进行处理
对非严重问题,java通过Exception类进行描述,对于Exception可以使用针对性的处理方式进行处理

异常处理标准格式(第一种格式):

try{
产生异常的语句
}
catch(异常类 变量){
异常处理语句
}
finally{
一定会执行的语句
}


 

3。对捕获到的异常进行常见的方法操作
e.getMessage() 
e.toString() 异常名称:异常信息
e.printStackTrace()

 

在函数上声明异常。便于提高安全性,让调用着去进行处理,不处理则编译失败。
throws关键字用于声明函数可能会出现问题

对多个异常处理,建议声明具体的异常类型,

建议在异常处理时,catch块中一定要定义具体处理方式


自定义异常
当在函数内部出现了throw抛出已成对象,那么就必须要给出对应的处理动作。要么在内部try... catch处理,要么在函数上声明让调用者调用处理。(RuntimeException例外)
一般情况在,函数内部出现异常,函数上需要声明。

引用中发现,自定义异常打印的结果中只有异常的名称,却没有异常的信息。这是因为自定义的异常并未定义信息

在自定义的异常类中如何定义异常信息呢?
因为父类中已经把异常信息的操作都完成了。所以此类只要在构造时,将异常信息传递给父类,通过super语句,那么之后可以直接通过getMessage方法得到自定义的异常信息。

自定义异常的定义方法:必须是自定义类继承Exception

异常体系的一个特点:因为异常类的异常对象都被抛出。他们都具备可抛性,这个可抛性是Throwable这个体系中的独有特点。只有这个体系中的类和对象才可以被throws和throw操作

 


Exception中有一个特殊的子类异常RuntimeException (运行时异常。)
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过;
之所以不用在函数声明,是因为不需要让调用者处理。当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后对代码进行修正。

自定义异常时:如果该异常的发生,程序无法再继续进行运算,就让自定义异常继承RuntimeException。

简单例子:

class FuShuException extends Exception{
 
 public FuShuException(String message) {
  super(message);
 }
}
class Demo{

 int div(int a,int b) throws FuShuException{
  if (b < 0){
   throw new FuShuException("除数为负数");//手动通过throw抛出一个自定义异常对象;
  }
  return a/b;
 }
}

异常处理的第二种格式(不包含finally):

try{

}catch(Exception e){

}



 

异常处理的第三种格式(不包含catch):

try{

}
finally{

}  


 

异常在子父类覆盖中的体现
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者父类异常的子类异常。
2.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子类
3.如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不能抛出异常,如果在子类发生异常,必须在子类中try{}catch{}处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值