java面向对象常见问题_JAVA 面向对象 异常

1.异常

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

2.Java编程语言使用异常处理机制为程序提供了错误处理的能力

3.java的异常处理是通过5个关键字来实现的:

try、catch、finally(捕获异常);throw(手动抛出异常);throws(声明异常)

4.使用try-catch块捕获异常分为3种情况

第一种:正常(try不会产生异常,执行try-catch块后面的)

第二种:出现异常(try发生异常,产生异常对象,异常类型匹配,进入catch块)

第三种:异常类型不匹配(try发生异常,产生异常对象,异常类型不匹配,程序中断运行)

try{

代码块

}catch(异常类型){

//对异常进行处理的代码块

}

5.异常对象常用的方法

方法名 说明

void printStackTrace() 输出异常的堆栈信息

public static void main (String []args){

try{

divide();{

}catch(Exception  e){

e.printStackTrace();

}

}

}

调用者处理异常

String getMessage() 返回异常信息描述字符串,是printStackTrace()输出信息的 一部分

public static void main (String [] args)throw Exception{

divide();

}

调用者继续声明异常(main方法声明的异常有java虚拟机处理

6.常见的异常类型

异常类型 说明

Exception  异常层次结构的父类

ArithmeticException 算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问 null 对象成员

ClassNotFoundException 不能加载所需的类

IllegalArgumentException 方法接收到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常,如把"abc"转换成数字

7.try-catch-finally

在try-catch块后加入finally块,是否发生异常都执行,不执行的唯一情况:

在try块或catch块中调用退出虚拟机的方法,即System.exit(1).

存在return的try-catch-finally块:try-catch-finally-return

public void method(){

try { // 代码段 1 // 产生异常的代码段 2

} catch (异常类型 ex) {

// 对异常进行处理的代码段3           return;

}finally{

// 代码段 4

}

}

9c59796a9809373c5d725b51775f3853.png

8.多重catch块引发多种类型的异常

排列catch语句的顺序:先子类后父类

发生异常时桉顺序逐个匹配

只执行第一个与异常类型匹配的catch语句

public void method(){

try { // 代码段 // 产生异常(异常类型2)

} catch (异常类型1 ex) {

// 对异常进行处理的代码段

} catch (异常类型2 ex) {

// 对异常进行处理的代码段

} catch (异常类型3 ex) {

// 对异常进行处理的代码段

}

// 代码段

}

507d22cfe6638bc43f82ca5198d598d1.png

9.throw和throws区别

throw:手动抛出异常;可以抛出自定义异常;throw抛出的运行时异常,可以不进行处理

throws:声明方法可能抛出的异常;可以抛出多个异常;用throws在方法中抛出异常,此方法的调用者既可以在本方法抛出,也可以用try-catch捕获

10.异常分类

Exception:

checked异常——必须捕获或者声明抛出

Runtime运行时异常——不要求必须捕获或者声明抛出

Error :

仅靠程序本身无法恢复的严重错误

11:什么是异常处理?

java编程语言使用异常处理机制为程序提供了错误处理的能力

程序中预先设置好对付异常的处理方法——(程序运行)异常

对异常进行处理——处理完毕,程序继续运行

12:为什么使用异常机制?

使用 if -else 来解决异常问题的弊端:

代码臃肿,程序员要花大量时间和精力“堵漏洞”,程序员很难堵住所有“漏洞”

13:在catch中处理异常

加入用户自定义信息处理    System.out.println("出现错误")

调用方法输出异常类型       e.printStackTrace();

14:多个catch情况,异常不匹配情况就会直接跳到finally块中,catch可有多个从小到大进行捕获

15:finally后加输出语句:加 return 会显示语句,不加return 后面的代码不会输出

16:System .exit(1):中断程序,退出java虚拟机             return结束方法

17: 手动抛出异常:

public class people {

private  String sex;

public viod setsex (String sex)thow Exception{

if("男".equals(sex) // "女".equals(sex)){

this.sex=sex;

}else{

throws new Exception("性别必须是男或女")

}

}(在测试main方法中,使用try-catch-finally进行处理异常)

}

18:使用log4j记录日志步骤

在项目中加入log4j的JAR文件

创建log4j.properties文件

配置日志信息

使用log4j记录日志信息

19:日志记录输出级别:

fatal>error>warn>info>deloug

20:%%:输出一个%字符

21:检查型异常:编译时异常(语法错误)

非检查型异常;运行时异常(逻辑错误)

22:catch(error  e)

try{}  finally{}

都是可以实现的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值