java todo error_Java中的异常和错误

本文将简要介绍Java中的一些异常和错误

简介:Java中的异常或者错误都有一个共同的祖先Throwable(可抛出),它有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。Error指的是代码运行时JVM出现的故障,不属于程序员的责任范畴,故在这里只做介绍。Exception指的是应用程序中可由程序员解决的问题。主要可分为两种:

运行时异常(RuntimeException):指可以在编写代码时避免的异常,编译器懒得帮你指出

已检查异常(CheckedException):指外部环境因素可能导致的异常,比如调取外部文件时文件根本不存在。编译器大部分情况下会帮你指出,让你把代码写的更严谨更科学(当然编译器是人写的,他也有看不出来的时候),省的在涉及外部因素这一步时出故障,导致程序直接挂掉而产生损失。使用一些方法让程序运行出错时立马转到挽救的语句上去,从而减少损失。(直接就挂在那了有可能前面做的事情得到的数据会丢失)

下面我们分别来讨论这两种异常

RuntimeException

分类

算数异常(ArithmeticException)

数学运算上出了问题,比如分母为0

空指针异常(NullPointerException)

对象为空你却调用了他的属性和方法

强制转型错误(ClassCastException)

部分类型之间无法强转导致发生错误

通常是继承于同一父类的两个子类实例化出的对象,引用类型模糊。

数组越界异常(ArrayIndexOutOfBoundsException)

超出了数组的容纳范围而出错,如本有5个元素你想要输入或者输出六个就会越界

数字格式化异常(NumberFormatException)

包装类中,将字符串转为数字时字符串中有非数字成分

测试

1 packagecn.hbc.exception;2

3 public classTest01 {4 /**

5 * 介绍基本异常类型并测试6 *@paramargs7 */

8

9 public static voidmain(String[] args) {10 //TODO Auto-generated method stub11 //数学异常

12 int a=0;13 if(a!=0)14 System.out.println(3/a);15 //空指针异常

16 String str=null;17 if(str!=null) {18 System.out.println(str.length());19 }20 //强制转型异常

21 Cat cat;22 Animals dog=newDog();23 if(dog instanceofCat)24 cat=(Cat)dog;25 //数组越界异常

26 int[] in=new int[5];27 for(int i=0;i<5;i++){28 in[i]=1;29 }30 if(in.length>5)31 System.out.println(in[5]);32 //数字格式化异常

33 String st="2342adc";34 System.out.println(Integer.parseInt(st));35 }36

37 }38 classAnimals{39

40 }41 class Cat extendsAnimals{42

43 }44 class Dog extendsAnimals{45

46 }

CheckedException

处理方法

try catch法

格式:

try{可能出现异常的语句}

catch(特定类型的异常对象,可以自定义异常类型){

写出处理方法,一般是直接打印出异常,或者关闭一些出错的程序,对可能产生的损失加以弥补

}

finally{写出不管怎样都会执行的代码}

运行流程

在try中出现异常,停止执行try中的语句,包装成一个异常对象传到对应的catch中,执行catch中的语句,最后统一执行finally中的语句

直接抛出法

使用throws声明异常并抛出

谁调用谁处理,比如上面try catch的异常类型查源码看类型,就是找到抛出的异常的类型,然后解决别人留下来的异常

最终在main方法中抛出会丢给虚拟机,虚拟机会直接打印出异常日志

注意

catch捕获异常时注意子类异常类型在前父类异常类型在后

处理异常不可以代替简单测试---只在异常情况下使用异常机制

不要进行小粒度的异常处理---应该将整个任务包装在一个Try语句块中

异常往往在调用者处处理,暂时先了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值