Java基础学习11_异常与异常处理

来源:互联网 发布:360网络防火墙 编辑:程序博客网 时间:2024/06/05 04:28

一. 异常简介

异常(Exception)指的是所有可能造成计算机无法正常处理的情况。


异常处理有以下特点:

1、不需要打乱程序的结构,如果没有错误,程序运行不受影响

2、不依靠方法的返回值来报告错误是否产生

3、采用集中的方式处理错误,能够根据错误种类的不同来进行对应的错误处理操作


常见异常:
1、算术异常(ArithmeticException):1/0

2、空指针异常(NullPointerException):没有给对象开辟内存空间却使用该对象时抛出

            String str=null; System.out.println(str.length());

3、文件未找到异常(FileNotFoundException):程序试图打开一个不存在的文件进行读写时抛出

4、数组下标越界异常(ArrayIndexOutOfBoundsException):int[2]={10,20,30}

5、内存不足错误(OutOfMemoryException):当可用内存不足让java虚拟机分配给一个对象时抛出

6、类型转换异常(ClassCastException):


异常处理的目的:使程序员得到反馈;使程序以一种适当的方式继续运行或者停止运行;可以保存当前用户的操作或者进行数据回滚;同时把占用的资源释放掉。


异常可分为两大类:java.lang.Exception类与java.lang.Error类。这两个类都是Trowable的子类。


二. 使用try...catch...finally...实现异常处理

语法:

<span style="font-size:18px;">try{//一些会抛出异常的方法}catch(InputMismatchException e)//异常类 对象名称{//处理该异常的代码块1}catch(ArithmeticException e){<span style="font-family: Arial, Helvetica, sans-serif;">//处理该异常的代码块2 }</span></span>





如果try程序块有异常发生,程序的运行便中断,并抛出“异常类所产生的对象”。抛出的对象如果属于catch()括号内欲捕捉的异常类,catch则会捕捉此异常,然后进入catch的块里继续运行(其中,要注意catch的顺序问题,要先子类后父类,一般Exception类是放在最后的)。无论try程序块是否捕捉到异常,或者捕捉到的异常是否与catch()括号里的异常相同,最终一定会运行finally块中的程序代码。

public class TryCatchTest {public static void main(String[] args) {// TODO 自动生成的方法存根       TryCatchTest tct=new TryCatchTest();       int result=tct.test();       System.out.println("test执行完毕");}     public int test(){int divider=10;int result=100;try{while(divider>-1){divider--;result=result+100/divider;}return result;}catch(Exception e){
                        e.printStackTrace();System.out.println("循环出现异常了");        return result=999;<span style="white-space:pre"></span>}finally{<span style="white-space:pre"></span>System.out.println("Finally");<span style="white-space:pre"></span><span style="white-space:pre"></span>    System.out.println(result);<span style="white-space:pre"></span>}}}
输出:
循环出现异常了
Finally
999
test执行完毕
java.lang.ArithmeticException: / by zero
at com.imooc.test.TryCatchTest.test(TryCatchTest.java:17)
at com.imooc.test.TryCatchTest.main(TryCatchTest.java:8)

上段代码中,printStackTrace()方法给出了更为详细的异常信息,不仅包括异常的类型,还包括异常发生在哪个所属包、所属类、所属方法以及发生异常的行数。

同时,注意返回的顺序。

三. java中的异常抛出以及自定义异常

java的异常抛出需要使用throw和throws关键字.

throw: 将产生的异常抛出(动作)
throws:声明将要抛出何种类型的异常(声明)

语法:
public void 方法名(参数列表)throws 异常列表{
//调用会抛出异常的方法或者throw new Exception();



自定义异常:

 class 自定义异常类 extends 异常类型{


public class Initial {public static void main(String[] args) {        try{        throw new MyException("自定义异常");        }        catch(MyException e){        System.out.println(e);        }}}<strong>class MyException extends Exception</strong>{//为自定义异常类添加一个带有字符串参数的构造器(也可以根据情况添加无参构造器)
    public MyException(String msg){super (msg);}}


四. java中的异常链



...


五. 总结








0 0
原创粉丝点击