JAVA异常处理

来源:互联网 发布:网络项目创业包括哪些 编辑:程序博客网 时间:2024/05/06 23:10

一:异常概述

1.为什么需要异常处理?

程序漏洞无处不在。在开发过程中。一个程序即使编译阶段没有错误,有可能在运行时还是可能出现各种各样的错误。

尤其是在大型软件系统中,如果运行时产生的错误未能即使处理,有可能就会导致程序的崩溃或瘫痪。这样就严重影响了客户的利益。

2.什么是异常?

洪荒?泥石流?火山爆发?是的这是天气异常。相对开发程序来说,这样异常是不可控的,这是开发程序自己的异常改只能说明程序不够成熟,这款开发程序我们不推荐。

下雨旷工了?醉酒驾驶出事故了?今天上课没注意听讲题不会做了?这些呢,都是可控的。比如开车时间不喝酒,上课好好听。这些都可以避免。本身是可控的。

二:异常分类

真个Java体系结构中,Throwable是所有异常的父类,异常飞卫Error和Exception两种类型。

1.error:

Error类通常用来描述Java运行时系统中的内部错误以及资源好景错误,一般指JVM错误。ERRO类型的异常比较严重,这种异常被称为致命性异常。就好比自然灾害,不可预控的。

2.Exception:

Exception类:非致命性异常。这类异常是在程序开发过程中发生后可以进行捕获的。处理后更能保证程序的健壮性。

Java程序中的异常处理只要是针对Exception异常及其子类进行的。Exception又分为编译时异常和Runtime Exception异常。

运行时异常:

package com.exception;public class Demo {public static void main(String[] args) {int a=10/0;System.out.println(a);}}

编译异常:(通常就是编写代码时出现的异常)

三:异常处理

1.try-catch-finally

有计划的对可控的事故进行处理。比如下雨了?就提前看下天气预报。知道开车办事就不碰酒。它是对程序中可能遇到的异常情况预先设置的处理方法。程序一但知道异常在控制范围内,就对其进行处理。该上班上班,该办事办事,哪怕开火车。

try-catch-finally处理步骤:一但在try语句块中产生异常,首先产生对应异常类的实例对象;在catch语句块捕获对应的异常对象;finally是try-catch的统一出口。try语句块是必须的。catch块和finally块可以省略,但是不能同时省略,实际开发中catch块是不建议省略的,就好比try是来控制问题,catch就是给出的方案。

package com.exception;public class Demo {public static void main(String[] args) {int a=0;int b=0;int c=0;try {c=a/b;} catch (ArithmeticException e) {// TODO: handle exceptionSystem.out.println("算术异常");}catch (ArrayIndexOutOfBoundsException e) {// TODO: handle exceptionSystem.out.println("数组下标越界异常");}catch(Exception e){System.out.println("异常父类:包含了上面定义的两个异常对象");}System.out.println(c);}}


在程序中使用单个catch进行异常处理时,catch语句块建议直接使用Exception,这样可以保证程序中出现的全部异常可以被处理到。

若果是多个catch中,异常子类必须放在异常父类之前。否则......你试试.....

2.使用throw和throws

throw?手工跑出一个异常,终止程序运行

throw new  ArithmeticException("算术异常");

随便抛,抛的出来说明你对业务了解到位,这样更能很好的保持程序的健壮性。

throws?系统自动捕获并将异常抛给调用者,throws 在方法后面声明,throw在方法内部使用。

四:自定义异常

就是定义一个类继承了异常父类,后期通过手工将异常抛出....直接贴代码

package com.exception;public class MyException extends Exception {public MyException(String msg){System.out.println("呵呵");System.out.println(msg);}}class demo5{public static void main(String[] args) throws Exception {int a=0;if(a==0){throw new MyException("被除数不能为0");}int b=a/0;System.out.println(b);}}


异常类的使用细节:

1.一个方法被重写时,重写的方法必须跑出相同的异常类或异常子类

2.如果父类方法跑出多个异常类,则重写方法必须抛出父类方法异常类的一个子集,不能抛出新的异常(父类异常范围内的异常)

....有异常使用细节方面的大大,随时欢迎对小弟指正.....

0 0
原创粉丝点击