栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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. :该自定义异常类必须继承异常类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号