java-throwable异常和异常处理基础入门

throwable异常

异常概念

在程序运行过程中产生使程序终止正常运行的错误对象

异常类

Java异常都是Throwable的子类,是Objec类的直接子类,在java.lang包中,Throwable类有两个子类,一个是Error类,一个是Exception类

Error类是描述的系统内部错误

Exception类又分为非检查异常和检查异常,非检查异常都是RunTimeException类及其它的子类,非检查异常都是在程序运行时检测到的,编译器不对非检查异常处理(免检异常)

常见免检异常

  1. NullPointerException:空指针异常,当某个对象的引用为null时调用该对象的方法和使用对象就会产生异常
  2. ArithmeticException:算术异常,例如在做除法运算时,出书为零时产生异常
  3. ClassCastException:对象转换异常
  4. ArrayIndexOutOfBoundsExcepiton:数组下标越界异常,当引用数组元素的下标超出范围时产生的异常
  5. NumberFormatException:数字格式错误异常,将字符串转换成数值时,如果字符串不能正确转换成数值时产生该异常

检查异常

检查异常是除RunTimeException类及其子类以外的异常,也成为必检异常

检查异常程序必须捕获或者声明抛出,否则编译不能通过

  1. ClassNotFoundException:当应用程序试图使用class类中的for Name()、loadClass ()方法通过字符串名加载类时,抛出该异常
  2. NoSuchMethodException:无法找到某一特定方法时,抛出该异常
  3. IoException:此类是失败或中断的 I/O 操作生成的异常的通用类
  4. SQLException:提供关于数据库访问错误或其他错误信息的异常

Error分类

VirtulMechineEror:java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误

OutMemoryError:因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟 机无法分配一个对象,这时抛出该异常

StackOverFolwError:当应用程序递归太深而发生堆栈溢出时,抛出该错误

ThreadDeath:调用 Thread 类中带有零参数的 stop 方法时,受害线程将抛出一个 ThreadDeath 实例仅当应用程序在被异步终止后必须清除时才应该捕获这个类的实例

异常处理

try -catch-finally方式

public class TryTest {

public static void main(String[] args) {

try {

int x=2,y=8,result;

result=x+y;

System.out.println(result);

}

catch(Exception e) {

System.out.println(e.getMessage());

}

finally {

System.out.println("finally");;

}

}

}

  1. :try块将程序中可能产生异常的代码用大括号括起来,该代码块可能产生一种或者多种异常
  2. catch用来捕获异常,catch可以有多个,用来处理不同的异常,若有多个catch代码块且设计到父子类,父类异常放在后面,子类异常放在前面
  3. finally是可选项,一般用来释放资源,无论是否产生异常,该代码块都会执行
  4. 一个try块必须有一个catch块或者finally块,catch块或者finally块都不能单独使用,必须跟try块

throw方式

public class Example01 extends RuntimeException{//继承RuntimeException

public  void divisor(int y){

if(y==0) {

throw new ArithmeticException("除数为零");//算术异常

}

}

public static void main(String[] args){

Example01 t=new Example01();

t.divisor(0);

}

}

结果:(我只是做一个测试,ArithmeticException我没有具体去实现)

  1. 该方法抛出的是java源码里面自定义的方法
  2. 该类必须继承异常类

throws方式

class TestException extends RuntimeException{//自定义异常

public TestException(){

System.out.println("除数为0");

}

public TestException(String message) {

super(message);

}

}

public class Example01{

public  void divisor(int y)throws TestException{

if(y==0) {

throw new TestException("除数为零");

}

}

public static void main(String[] args){

Example01 t=new Example01();

t.divisor(0);

}

}

结果

  1. :throws是声明方法抛出异常
  2. :该自定义异常类必须继承异常类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值