当前位置: 首页 > news >正文

Java技术复习提升 10异常

10 异常

10.1异常介绍及分类

异常捕获 选中后alt+tab+t->选中try-catch

异常就是程序执行中不正常的情况 注意语法和逻辑错误并不是异常

异常分类有两种 error和exception error是错误 虚拟机无法解决的严重问题 exception是其他因为编程错误或者外在因素导致的一般性的问题 exception又分为两大类 运行时异常 编译时异常 前者指程序运行时发生的异常 后者指编译器检查出的异常 

 

 顾名思义 非受检异常就是在编译时不需要强制处理的异常 所以也叫运行时异常 受检异常就是编译时异常

10.2 运行时异常

运行时异常是程序员应该避免的 包括

 

 

 

 

 

10.3 编译时异常

 

10.4 异常处理方式

理解:可以看到 如果有try-catch-finally 捕获到异常可以处理 但如果没有 就要将该异常throws到调用它的方法 进行处理 直到有对应的处理异常的地方 如果一直没有 就会将该异常throws到JVM进行处理 

10.5 try-catch-finally 

import java.util.Scanner;class test{public static void main(String[] args) {Scanner in=new Scanner(System.in);String name=in.next();try {int num=Integer.parseInt(name);}catch (Exception e){e.printStackTrace();}finally {System.out.println("finally一定执行");}}
}

 

 多个catch语句

import java.lang.Object;
import java.util.Scanner;class test{public static void main(String[] args) {Scanner in=new Scanner(System.in);String name=in.next();int num=in.nextInt();try {int n=Integer.parseInt(name);Father father=new Father();father.fly();int i=1/num;}catch(NullPointerException e){e.printStackTrace();}catch (NumberFormatException e){e.printStackTrace();}catch(ArithmeticException e){e.printStackTrace();}catch(Exception e){e.printStackTrace();}finally {System.out.println("finally一定执行");}}
}class Father{void fly(){System.out.println("father flying");}void swim(){System.out.println("father swimming");}
}class Son extends Father{@Deprecated void fly(){System.out.println("son flying");}@Override void swim(){System.out.println("son swimming");}
}class Daughter extends Father{}

 

try-finally相当于没有捕获异常 所以如果出现异常程序会直接崩掉

题目

先执行try 数组越界异常 进入对应catch块 执行语句(return不执行) 最后进入finally块 执行语句return执行 所以返回4

总结:finally对返回值的影响:看finally中有没有返回值

总结:

10.6 throws

10.7 自定义异常

package com.hspedu.customexception_;
public class CustomException {
    public static void main(String[] args) /*throws AgeException*/ {
        int age = 180;
        //要求范围在 18 – 120 之间,否则抛出一个自定义异常
        if(!(age >= 18 && age <= 120)) {
            //这里我们可以通过构造器,设置信息
            throw new AgeException("年龄需要在 18~120 之间");
        }
        System.out.println("你的年龄范围正确.");
    }
}
//自定义一个异常

//1. 一般情况下,我们自定义异常是继承 RuntimeException
//2. 即把自定义异常做成 运行时异常,好处时,我们可以使用默认的处理机制
//3. 即比较方便
class AgeException extends RuntimeException {
    public AgeException(String message) {//构造器
        super(message);
    }
}
 

 

http://www.lryc.cn/news/489945.html

相关文章:

  • 真题-桂城2022年五年级
  • android 使用MediaPlayer实现音乐播放--权限请求
  • Web开发:ORM框架之使用Freesql的DbFrist封装常见功能
  • 【多线程-第一天-多线程的执行原理-多线程的优缺点-主线程 Objective-C语言】
  • SQL基础语法介绍-基于MySQL
  • 一分钟学习数据安全——数据安全风险的系统化应对思路
  • 端口port常识
  • 【Oracle实战】文章导读
  • “人工智能+高职”:VR虚拟仿真实训室的发展前景
  • c语言学习27宏定义条件编译
  • 理论结合实践:用Umami构建网站分析系统
  • Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
  • 移动充储机器人“小奥”的多场景应用(上)
  • 已解决wordpress提示正在执行例行维护,请一分钟后回来
  • DDR3脚位解析,class分类
  • 【深度学习|目标跟踪】DeepSort 详解
  • 快速图像识别:落叶植物叶片分类
  • MTK Android12 user版本MtkLogger
  • Python数据结构day2
  • 后台通用tag面包屑
  • oracle数据恢复—通过拼接数据库碎片的方式恢复Oracle数据的案例
  • node.js fluent-ffmpeg 桌面推流
  • AWS的流日志
  • 大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)
  • Qt入门1——认识Qt的几个常用头文件和常用函数
  • ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路
  • 在 Sublime Text 中直接预览 Markdown 文件
  • 分词器的概念(通俗易懂版)
  • 速通前端篇 —— CSS
  • 数据库表设计范式