3.3 java基础总结①异常②自定义异常

①异常②自定义异常

一、Java中问题概述
一般来说有个2/8原则,一个程序员80% 的精力在处理20%可能发生异常的代码
Java中问题分为错误(Error)和异常(Exception)

错误:不能用代码解决的问题,往往是环境或者硬件的问题
异常:可通过修改代码或者预处理来解决的不正确情况,称为异常

异常分为编译期异常和运行时异常,如果抛编译异常,语法上调用者必须处理或往上抛;抛运行时异常,调用者可不往上抛

Java里边结束的3中方式:
①正常执行完
②return返回
③发生异常,没有处理,强制结束
都是返回方法的调用处

处理异常的方式:
①捕获异常,不让它沿调用栈继续抛出
②捕获,并继续向下抛出
③不捕获,导致方法从调用栈中弹出

二、捕获异常 try catch finally

try{
try块(尝试)
}catch(Exception Type){
catch块(捕捉)
}finally{
finally块(总会执行)
}

try块如果发生异常,抛出异常,跳到对应的catch块,执行问catch块后跳出,(不会再执行匹配后边的catch)。最后加Exception,防止有未捕获到的异常。
Exception要写在最后,catch有顺序,有继承关系的,子类在前,父类在后。
try后边可以接多个catch,复杂代码中多种异常处理可以提升用户体验。

finally块总会执行,即使有break,return,都会执行完finally再return,代码级别能关闭finally的只有System.exit();

所以这里一般用作清理一些资源,比如流的关闭,链接的关闭

catch和finally必须要配套try,不能单独出现,可以有
try catch,catch
try finally
try catch finally

三、抛异常 throw

throw Exception 方法声地方,后边跟抛出的异常类型(语句)
throws 后边可接多种异常类型,子类抛出的异常不能比父类多(不是指个数,而是范围)
方法声明完整格式:访问修饰符、可选修饰符、返回类型、方法名(形参列表) throws 异常类型1,2,3

Throwbale这里有两个方法比较重要:
-getMessage(得到异常信息,不是所有的异常都有异常信息,这里的信息比如除数为0)
-printStackTrace(打印堆栈信息)

throw抛异常(主动抛)非常有用,
抛编译异常,方法里必须处理(trycatch或者往上抛),如果往上抛,调用者也必须trycatch或者往上抛
抛运行异常,可以不用往上抛,或者trycatch

四、自定义异常:
①创建一个类继承Exception
②添加构造方法和普通方法
构造方法里主要是各种异常类型,普通方法里可以写日志等等
③在一个方法中抛出异常
④在另一个方法中捕获异常并处理

好处:不用每一处都处理,直接往上抛
遇到异常统统往上抛,可以把所有的异常全部抛到表现层,在表现层进行处理,并调用自定义异常的写日志等方法存起来

public class LovoException extends Exception{

public LovoException() {
}

public LovoException(Exception e){
//JVM产生的异常,使用多
super(e);
}

public LovoException(String message){
//根据业务异常,构造,使用较少
super(message);
}

public void writeLog (){
//各种日志文件
this.getStackTrace();
System.out.println(this.getMessage());
}
}

public void count() throws Exception {

int a = new Scanner(System.in).nextInt();
try {
int b = 3 / a;
System.out.println(3/a);
} catch (Exception e) {
// throw new LovoException(e.getMessage() + "除数不能是0");
throw new LovoException(e);
}
}

时间: 2024-10-13 19:35:37

3.3 java基础总结①异常②自定义异常的相关文章

【Java基础】异常的简单分类与处理

Java中所有的异常都继承自Throwable类,Throwable类的已知子类有Error和Exception. Error是指系统出现的错误,这种错误出现的时候,我们的程序无能为力,所以不需要进行处理. Exception则是在程序中出现的异常,我们通常对这些异常进行处理. Exception有很多的子类,有一类比较特殊,那就是RuntimeException.RuntimeException属于非受检异常,也就是编译器不会对这种异常进行检查,这类异常被允许不用捕捉,也就是不用catch.我

【java基础之异常】死了都要try

目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常throws 2.4 捕获异常try…catch 2.4 finally 代码块 2.5 finally 代码块与return语句 2.6 异常注意事项 3.自定义异常 3.1 概述 3.2 自定义异常练习 4.来!和异常大干一场 @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM

Java基础笔记-异常

Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的处理方式是try catch finally.格式为: try { 需要被检测的异常. } catch(异常类 变量) { 处理异常的代码()处理方式 } finally { 一定会被执行的代码语句 } 一个简单的异常处理代码及有关函数的应用: 1 /* 2 异常:Exception. 3 处理异常

05. Java基础之异常

本文参考了以下链接并作出总结与修改: 1.https://www.cnblogs.com/lulipro/p/7504267.html 2.https://www.cnblogs.com/taiwan/p/7073743.html 3.https://blog.csdn.net/chaplinlong/article/details/50983594 一.简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出

Java基础笔记-异常总结,包

异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建立的对象都具备可抛性.可以被throw和throws关键字所操作,只有异常体系具备这个特点. throw和throws的用法区别: throw定义在函数内,用于抛出异常对象. throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开. 当函数内容有throw抛出异常对象,并未进行tryca

黑马程序员-----Java基础:异常和异常处理

------- android培训.java培训.期待与您交流! ---------- 异常概述 异常:就是程序在运行时出现的不正常的情况 异常由来:问题也是现实生活中的一个具体的事物,也可以通过Java的类的形式进行描述,并封装成对象 对于问题的划分:一种是严重的问题.一种是非严重的问题 对于严重的,Java通过Error类进行描述,对于Error一般不编写针对性的代码对其进行处理 对于非严重的,Java通过Exception类进行描述,对于Exception可以使用针对性的处理方式进行处理

黑马程序员-Java基础之异常

异 常:就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多个属性信息存在.当出现多属性信息最方便的方式就是将这些信息进行封装.异常就是java按照面向对象的思想将问题进行对象封装.这样就方便于操作问题以及处理问题. 出现的问题有很多种,比如角标越界,空指针等都是.就对这些问题进行分类.而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置

Java基础(basis)-----异常与错误处理

1.编译型异常和运行时异常       编译时异常是指程序正确 而由外界条件不满足而产生的异常 java 中要求必须去捕捉住这类异常 不然无法通过编译 运行时异常是指程序存在着bug 如空指针异常 数组下标越界 都属于 运行时异常 2.Error和Exception       Exception:是程序本身可以处理的异常 Error:是程序无法处理的错误,这些错误标识故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,一般不需要程序处理,例如:内存空间不足,栈溢出 3.throws  在方法的

Java基础学习 -- 异常

通过例子来理解: package exception; public class ExceptionCatch { private String s = null; public static void main(String[] args) { ExceptionCatch ec = new ExceptionCatch(); try { ec.s.toString(); }catch(Exception e) { System.out.println("Caught exception: &