java基础-异常Exception-day10
1. 练习
package com.msb01;
import java.util.Scanner;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 10:58
* @Description: com.msb01
* @version: 1.0
*/
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println(num1/num2);
}
}


通过 if-else堵住异常 可读性 差
2. 异常三联 try-catch-finally
package com.msb01;
import java.util.Scanner;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 10:58
* @Description: com.msb01
* @version: 1.0
*/
public class Test {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println(num1/num2);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(1111);
System.out.println(222);
System.out.println(333);
}
}
异常被打印 后续代码正常执行

如果catch中异常的类型不匹配 不会走catch的逻辑 相当于 没捕获
异常捕获后如何处理
- 不处理
- 自定义输出
- 打印异常
- 抛出异常


什么情况下 try-catch 后面的逻辑(谢谢使用计算器)不会执行
- throw抛出异常
- catch 没有捕获住异常
- try中遇到return 方法里面将返回值返回调用方
怎样才能 无论如何都执行try-catch 后面的逻辑
将逻辑放入 finally
reuturn与finally的先后顺序
先finally后return (记忆方法 f排序在r的前面)
哪些逻辑会放入finally
关系数据源 关闭io 关闭socket
有一句代码很厉害可以不让finally里面的逻辑执行
System.exit(0); jvm虚拟机退出
package com.msb01;
import java.util.Scanner;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 10:58
* @Description: com.msb01
* @version: 1.0
*/
public class Test {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println(num1/num2);
// System.exit(0);
return;
} catch (Exception e) {
System.out.println("对不起输出有误 无法计算");
System.out.println(e.toString());
System.out.println(e.getMessage());
e.printStackTrace();
// throw e;
} finally {
System.out.println("谢谢使用计算器");
}
}
}
并列符| 连接多个异常
package com.msb01;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 10:58
* @Description: com.msb01
* @version: 1.0
*/
public class Test {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = sc.nextInt();
System.out.println(num1/num2);
// System.exit(0);
return;
} catch (ArithmeticException |InputMismatchException |Exception) {
System.out.println("对不起输出有误 无法计算");
} finally {
System.out.println("谢谢使用计算器");
}
}
}
3.异常的分类

检查异常:防范于未然 写代码的时候就要对代码的异常进行处理
运行异常:写代码的会后不用特意对异常进行处理 运行过程中没法执行 才会抛出异常
package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:38
* @Description: com.msb01
* @version: 1.0
*/
public class TestException01 {
public static void main(String[] args) {
int[] a1 = {1, 2,3};
System.out.println(a1[10]);
}
}

public class TestException01 {
public static void main(String[] args) {
int[] a1 = {1, 2,3};
// System.out.println(a1[10]);
int[] a2 = null;
System.out.println(a2.length);
}
}

package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:41
* @Description: com.msb01
* @version: 1.0
*/
public class TestException02 {
public static void main(String[] args) {
Class.forName("com.msb01.Test").newInstance();
}
}

package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:41
* @Description: com.msb01
* @version: 1.0
*/
public class TestException02 {
public static void main(String[] args) {
try {
Class.forName("com.msb01.Test").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:41
* @Description: com.msb01
* @version: 1.0
*/
public class TestException02 {
public static void main(String[] args) {
try {
Class.forName("com.msb01.Test").newInstance();
} catch (InstantiationException|IllegalAccessException|ClassNotFoundException e) {
e.printStackTrace();
}
}
}

alt+enter快捷键
提示两种处理方式 一个是 throws 一个是 try/catch
package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:41
* @Description: com.msb01
* @version: 1.0
*/
public class TestException02 {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Class.forName("com.msb01.Test").newInstance();
}
}
3. 子类throws的异常 小于等于父类的异常
package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:47
* @Description: com.msb01
* @version: 1.0
*/
public class Person {
public void eat() throws RuntimeException{
System.out.println("eat");
}
}

4.自定义异常
package com.msb01;
/**
* @Auther: jack.chen
* @Date: 2023/9/17 - 09 - 17 - 11:51
* @Description: com.msb01
* @version: 1.0
*/
public class MyException extends RuntimeException {
static final long serialVersionUID = -70348971907L;
public MyException() {
}
public MyException(String message) {
super(message);
}
}
检查异常 需要使用try-catch捕获 或者throws
java基础-异常Exception-day10的更多相关文章
- Java基础-异常(Exception)处理
Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...
- 《Java基础——异常的捕获与抛出》
Java基础--异常的捕获与抛出 ' 前言: Error类(错误)和Exception类(异常)是Throwable类的子类. 异常分为CheckedException类(编译时异常)和Ru ...
- Atitit java的异常exception 结构Throwable类
Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...
- Java基础 - 异常详解
异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...
- Java基础(55):Exception类详解(转)
Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: public class Ex ...
- Java基础——异常体系
在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: 所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception. ...
- JAVA基础——异常详解
JAVA异常与异常处理详解 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1 ...
- Java常见异常:Exception in thread "main" java.lang.NoClassDefFoundError
在某一路径下执行编译好的class文件出错. 异常如下: E:\liwy>java Test98 Exception in thread "main" java.lang.N ...
- Java基础——异常
一.什么是异常 异常的英文单词是exception,字面翻译就是“意外.例外”的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界. ...
- Java基础——异常机制
[捕获异常] 硬件的错误.输入错误.物理限制等问题,都可能导致程序运行时的异常出现. 1.异常的分类层次 在java中,异常对象都是由Throwable类继承而来的,主要分为两大类: Error和Ex ...
随机推荐
- 27、Type关键字
1.是什么? type是go语法里额重要而且常用的关键字,type绝不只是对应于C/C++中的typeof.搞清楚type的使用,就容易理解Go语言中的核心概念struct.interface.函数等 ...
- python学习笔记:python的字符串拼接效率分析
问题的起因是因为在做LeetCode5714题的时候,对于字符串拼接使用了 ans = ans+s[i] 提交后超时了,改成 ans+=s[i] 就可以通过了,而且用c++好像也有这个问题,在此记录一 ...
- 【类型转换】使用c#实现简易的类型转换(Emit,Expression,反射)
引言 哈喽.大家好,好久不见,最近遇到了一个场景,就是在FrameWork的asp.net mvc中,有个系统里面使用的是EntityFramework的框架,在这个框架里,提供了一个SqlQuery ...
- 解决C#连接MySQL数据库报错 MySqlConnector
如果主机不支持 SSL 连接,则不会使用 SSL 连接. 连接不上. 解决方案:在连接字符串后添加 sslmode = none. <add key="connstring" ...
- Windows 7更新失败的解决方法
你好,1.在开始菜单中点击运行,→输入"services.msc"→找到"windows update"右击选择"停止":2.进入C:\wi ...
- Python笔记三之闭包与装饰器
本文首发于公众号:Hunter后端 原文链接:Python笔记三之闭包与装饰器 这一篇笔记介绍 Python 里面的装饰器. 在介绍装饰器前,首先提出这样一个需求,我想统计某个函数的执行时间,假设这个 ...
- 初探Git:理解和使用版本控制的魔法
遥远的古代,有一位美丽的仙女叫做嫦娥.她的丈夫后羿获得了令人长生不老的鹿骨露.一天,嫦娥在好奇心的驱使下,独自偷喝了这瓶仙药. 喝下仙药的瞬间,嫦娥发现自己开始飘起,越飘越高,最后飘向了月亮.嫦娥惊慌 ...
- 拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、用户使用手册)
@ 目录 前言 1. 需求分析 2. 可行性分析 2.1 简介 2.2 技术可行性分析 2.2.1 技术实现方案 2.2.2 开发人员技能要求 2.2.3 可行性 2.3 操作可行性分析 2.4 结论 ...
- ElasticSearch-1
原文链接:https://gaoyubo.cn/blogs/52ef5bf7.html 一.Elasticsearch 架构设计 Elasticsearch 架构层: Elasticsearch 五层 ...
- Blazor技术入门
曾写过点儿前后端分离的项目(Vue+.NET Core Web API).WPF和WinForm.因为Blazor不支持小程序的原因(相对于uniapp),所以只是大概知道Blazor可以写Web.P ...