java 编译异常_Java运行时异常和编译时异常介绍及实例讲解

4ca2bec9272b791b3f1e4dd85f305b5c.png

Java当中的异常

了解Java当中的异常,那么什么是异常呢?异常又有什么分类呢?异常中的特殊结构:try...catch...finally 结构的使用方法。

异常是一种对象,是靠虚拟机产生的,异常中断了正常指令流(程序靠着一个又一个指令)的事件,异常是运行时出现的。在Java中编译上出现的错误为所谓的语法上等的错误,而异常是编译通过的,但在运行时产生的,和编译是没有什么关系的。

异常会中断过程,后面就不再运行

异常是一个对象,对象对应相应的异常类,这些类是 jdk 提供的,异常的分类为Throwable父类(所有的异常类都是这个类的子类),Throwable 分Exception(代表所谓异常,Exception还有很多子类,如:RuntimeException),Error(错误,一旦产生错误,虚拟机关闭,一旦产生Error,虚拟机退出)

Exception分为两大类,运行时异常和编译时异常。

运行时异常的案例:

// uncheck exception

class Demo{

public static void mian(String args[]){

int i = i / 0;

System.out.println(i);

}

}

编译时异常的案例:

// check exception

// 必须对其进行捕捉或者抛出以便声明

class Demo{

public static void mian(String args[]){

Thread.sleep(1000);

}

}

RuntimeException 以及RuntimeException的子类为uncheck exception,除了RuntimeException以及RuntimeException的子类,都为check exception。

异常中的特殊结构:try...catch...finally结构

class Demo{

public static void mian(String args[]){

try{

// 有可能出现异常的代码放进try中,出现异常后,后面的代码不再运行

int i = i / 0;

System.out.println(2); // 不再运行

}catch(Exception e){ // 出现异常进入到catch运行

// 对产生异常的代码进行捕捉,打印异常信息

e.printStackTrace();

}

System.out.println(i);

}

}

// check 添加后就可以运行了

class Demo{

public static void mian(String args[]){

try{

Thread.sleep(1000);

}catch{

e.printStackTrace();

}

}

}

finally的加入(finally里面的代码都运行)

try{

代码;

}catch(Exception e){

e.printStackTrace();

}finally{

// 这里的代码这么样都运行,出不出异常都运行

}

异常分Error和Exception两大类,程序员对Error是没有办法的,只能改代码,但对Exception是可以处理的,Java中的异常处理机制是对系统的健壮性的体现,使用代码结构可以处理异常的代码,记住使用结构:try...catch...finally。

throw和throws的作用

throw 案例

class User{

private int age;

public void setAge(int age){

if(age < 0){

// 如果年龄为负数,创建异常对象

RuntimeException e = new RuntimeException("年龄不能为负数");

// 会在运行时抛出这个异常对象,显示 年龄不能为负数

throw e;

}

this.age = age;

}

}

出现异常,必须对其进行捕捉(try...catch...finally结构)或声明(throws)

throws案例

class User{

private int age;

public void setAge(int age) throws Exception{

if(age < 0){

// 如果年龄为负数,创建异常对象

RuntimeException e = new RuntimeException("年龄不能为负数");

// 会在运行时抛出这个异常对象,显示 年龄不能为负数

throw e;

}

this.age = age;

}

}

throws的作用,声明异常,谁调用谁处理。怎么理解,谁调用谁处理呢?

// 测试类,创建对象,进行调用,那么就由这个调用者来处理

User user = new User();

try{

user.setAge(-10);

}catch(Exception e){

System.out.println(e);

}

谁调用我的时候谁就去处理,如上代码解释。throw的作用是生成异常对象,对Java虚拟机抛出异常,throws的作用是声明一个函数有可能生成异常,但不在这个函数进行处理,而是通过调用它的对象,进行处理。

结语

下面我将继续对Java、 Android中的其他知识 深入讲解 ,有兴趣可以继续关注

小礼物走一走 or 点赞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值