java异常概念及其处理



java异常:
 在程序运行过程中所发生一些错误事件,是一种用java代码的错误处理机制。
关键字
  try:尝试
  catch:捕获
  finally:最终地
  throw:抛(第一二人称)
  throws:抛(第三人称)

java异常处理方式
1.自行处理
2.回避处理

语法:在代码块中
 try{
  //可能出现异常的代码
 }catch(异常类型1 变量){
  //处理异常代码
 }catch(异常类型2 变量){
  //处理异常代码
 }finally{
  //始终要执行的代码
 }
规则:
 1.try块必须跟catch或finally一起使用,try不能单独使用
 2.catch块可以有多个,只能跟在try块后
 3.catch(异常类型 变量) ,如果有多个catch,异常类型要从特殊到一般
 4.finally块也必须跟在try块
 5.try可以嵌套
 6.如果调用方法时,方法抛出异常,编译器会检查异常的类型,如果是RuntimeException或其子类,可以不自行处理。如果是非RuntimeException的异常,必须显示处理(try...catch,  throws),否则编译出错。
异常处理流程:
 当try块中代码出现异常,异常以一个对象的形式抛出,catch块去捕获(可能有多个catch块),如果与catch中的异常类型匹配,就执行catch块中的代码。如果有finally块,无论是否有异常都会被执行。
注意:
RuntimeException类型异常及子类异常可以不用显示处理异常;
其它类型的异常必须显示处理异常,否则出错编译错误。

RuntimeException常见子类:
 java异常:
在程序运行过程中所发生一些错误事件,是一种用java代码的错误处理机制。
关键字
try:尝试
catch:捕获
finally:最终地
throw:抛(第一二人称)
throws:抛(第三人称)

java异常处理方式
1.自行处理
2.回避处理

语法:在代码块中
try{
//可能出现异常的代码
}catch(异常类型1 变量){
//处理异常代码
}catch(异常类型2 变量){
//处理异常代码
}finally{
//始终要执行的代码
}
规则:
1.try块必须跟catch或finally一起使用,try不能单独使用
2.catch块可以有多个,只能跟在try块后
3.catch(异常类型 变量) ,如果有多个catch,异常类型要从特殊到一般
4.finally块也必须跟在try块
5.try可以嵌套
6.如果调用方法时,方法抛出异常,编译器会检查异常的类型,如果是RuntimeException或其子类,可以不自行处理。如果是非RuntimeException的异常,必须显示处理(try...catch, throws),否则编译出错。
异常处理流程:
当try块中代码出现异常,异常以一个对象的形式抛出,catch块去捕获(可能有多个catch块),如果与catch中的异常类型匹配,就执行catch块中的代码。如果有finally块,无论是否有异常都会被执行。
注意:
RuntimeException类型异常及子类异常可以不用显示处理异常;
其它类型的异常必须显示处理异常,否则出错编译错误。

RuntimeException常见子类:

ArithmeticException

当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。

ArrayIndexOutOfBoundsException

用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。

ArrayStoreException

试图将错误类型的对象存储到一个对象数组时抛出的异常。

ClassCastException

当试图将对象强制转换为不是实例的子类时,抛出该异常。

IllegalArgumentException

抛出的异常表明向方法传递了一个不合法或不正确的参数。

NullPointerException

当应用程序试图在需要对象的地方使用 null 时,抛出该异常

NumberFormatException

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。


StringIndexOutOfBoundsException

此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。

/***************************************************

回避处理:告诉调用者,此处有异常
throws,throw
在代码中
throw 异常对象
throw new XxxxException();
在定义方法或构造器时,声明异常
方法名([参数列表]) throws 异常类型1,异常类型2 {
代码
}
/***************************************************
自定义异常
public class XxxxxException extends Exception{
public XxxxxException(){super();}
public XxxxxException(String message){
super(message);
}
}
规则:
1.命令名一般格式XxxxxException
2.这个类必须继承Exception或其子类














ArithmeticException
 
当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。

ArrayIndexOutOfBoundsException
 
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
 
ArrayStoreException
 
试图将错误类型的对象存储到一个对象数组时抛出的异常。
 
ClassCastException
 
当试图将对象强制转换为不是实例的子类时,抛出该异常。
 
IllegalArgumentException
 
抛出的异常表明向方法传递了一个不合法或不正确的参数。
 
NullPointerException
 
当应用程序试图在需要对象的地方使用 null 时,抛出该异常
 
NumberFormatException
 
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
 

StringIndexOutOfBoundsException
 
此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。

/***************************************************

回避处理:告诉调用者,此处有异常
 throws,throw
 在代码中
  throw 异常对象
  throw new XxxxException();
 在定义方法或构造器时,声明异常
 方法名([参数列表]) throws 异常类型1,异常类型2 {
  代码
 }
/*************************************************** 
自定义异常
 public class XxxxxException extends Exception{
  public XxxxxException(){super();}
  public XxxxxException(String message){
   super(message);
  }
 }
规则:
  1.命令名一般格式XxxxxException
  2.这个类必须继承Exception或其子类
 
 
 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值