异常!!!

一:异常的概念

1、异常是指程序在运行过程中发生在正常情况以外的事件。如用户输入错误、除数为0、需要的文件不存在等等。

2、异常处理指对程序运行过程中产生的异常情况进行恰当的技术。

二:异常处理机制

1、java语言有两种处理异常的方式: 

一是利用try...catch...finally语句处理异常,优点是分开了处理异常代码与程序正常代码,增强了程序可读性,减少中途终止程序运行可能带来的危害;

二是由Java异常处理机制预设方式处理,一旦程序发生异常,停止执行程序并显示一些错误信息给用户。如果没有处理异常的措施,系统可能崩溃。

   

 2、异常类结构:
      学习Java API,从类结构开始有助于快速了解API的主要作用和使用方法。Java异常处理机制中,类java,lang.Throwable是所有异常类的祖先类,Throwable类有两个直接子类。①Error 子类,它包含Java系统或执行环境中发生的异常,用户无法捕捉它们,如CPU运行错误、内存溢出、I/O错误等:②Exception子类,它包含一般性的异常,如数组下标越界异常、除数为0异常、类型转换异常、I/O异常、SQL异常等,用户能用trycatch…finally语句捕捉它们,也能定义这些异常类的子类创建自己的异常处理。图10-3显示Java语言的异常类结构。


    Java的异常类型(Exception子类)分为受检查异常和不受检查异常。图10-3所示的 Error 类和 RuntimeException类及其子类是不受检查异常(Unchecked),其他如SQLException类、IOExcepti类等是受检查异常(Checked)。
(1) Error 子类代表Java系统内部错误,如ThreadDeath类、1OError类等,Java系统不能处理这些异常,由虚拟机直接抛出。这些异常属于不受检查异常。

(2) RuntimeException子类代表运行时异常,是程序运行过程中产生的错误,程序员通过调试修复它们。例如,通过检查数组下标和数组边界避免数组越界异常、类型转换前通过 instanceof 运算符进行类型检查等。这些异常也属于不受检查异常。
(3)其他子类如IOException、SQLException FileNotFoundException,它们的特点是程序运行前Java编译器会检查它们,如果程序中可能出现这类异常,程序员需要用异常处理语句try.catch…finally 捕获,或者用throws子句抛出,否则不能通过编译。
例如,打开一个文件,如果文件不存在将抛出FileNotFoundExcepton类属于受检查异常。图10-4的代码出现了受检查异常类FileNotFoundExcepton,如果不处理就不能通过编译。给出两种处理措施:①在方法的声明处用throws抛出这个异常;②用try…catch… finally 语句处理。图10-5为使用try…catch…finally语句处理受检查异常的代码,程序通过编译。受检查异常(编译异常)必须被处理。

                                                                                                                                       -+  三、 try…catch… finally语句

【语法格式1】异常处理。

try{
           //可能出现异常的代码
}catch(异常类1异常对象){
          //处理异常代码
}[catch(异常类2异常对象){
         //处理异常代码
}catch(异常类3异常对象){
         //处理异常代码
}… ]
[finally{
         //一定会运行的代码
}]

JDK7之后,Java 对 try…catch…finally语句进行了改进,语法更加简洁。

【语法格式2】异常处理(JDK 7)。
try {
         //可能出现异常的代码
}catch(异常类1[异常类2|异常类n]异常对象){
        //处理异常代码

}finally{
       //一定会运行的代码 

}                                                                                                                                                         

                                                                                                                                                         注意:

不管异常是否被捕获,finally 子句中的代码都会执行;

通常,在 finally 子句中编写一些关闭资源的代码;

try 语句允许我们定义在执行时进行错误测试的代码块;

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

总的来说: 
try{ //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行
}
finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
}

 四、throws                       

 见下一篇博客   

  • 36
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值