Java21天打卡day19-异常

2023-11-06

//异常
//异常分类
//编译时异常:程序编译时的异常例子 IO异常,SQL异常
//运行时异常的区别:程序在运行时出现的异常,会自动抛出该异常
//异常处理
//
//try catch finally处理异常
//throws 和 throw 的区别
//throws是用于在方法声明抛出的异常是(Oexcetion)类型,而throw是用于抛出异常。

Java 的异常处理通过 5 个关键字来实现:try、catch、throw、throws 和 finally。try catch 语句用于捕获并处理异常,finally 语句用于在任何情况下(除特殊情况外)都必须执行的代码,throw 语句用于拋出异常,throws 语句用于声明可能会出现的异常。

try {
    // 可能发生异常的语句
} catch(ExceptionType e) {
    // 处理异常语句
}
语法的处理代码块 1 中,可以使用以下 3 个方法输出相应的异常信息。
printStackTrace() 方法:指出异常的类型、性质、栈层次及出现在程序中的位置(关于 printStackTrace 方法的使用可参考《Java的异常跟踪栈》一节)。
getMessage() 方法:输出错误的性质。
toString() 方法:给出异常的类型与性质。

//题目1:完成一个编译时异常的举例 其实就是写的时候会有红线提示进行异常处理
//题目2:完成一个运行时异常的举例
public class Day19 {
public static void main(String[] args){
System.out.println(3/0);
}

}

//题目3:完成一个运行时异常捕获,获取异常信息后打印异常信息。
public class Day19 {
public static void main(String[] args){
   try{
       System.out.println(3/0);
   }catch (Exception e){
       e.printStackTrace();
       System.out.println("啊啊啊啊,出错了");//如果没有异常处理,这句是不会打印的
   }
}

}

//题目4:自定义一个异常并捕获抛出
import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        int age;
        Scanner in=new Scanner((System.in));
        System.out.println("请输入您的年龄");
        try {
            age=in.nextInt();
            if(age<0){
                throw new MyException("您输入的年龄为负数,输出错误");

            }else if(age>100){
                throw new MyException("您输入的年龄大于100,输出错误");
            }else {
                System.out.println("您的年龄是"+age);
            }

        }catch (InputMismatchException e1){
            System.out.println("您输入的年龄不是数字");
        }catch (MyException e2){
            System.out.println(e2.getMessage());
        }

    }
}
public class MyException extends Exception {
    public  MyException(){
        super();//继承父类构造函数
    }
    public MyException(String str){
        super(str);
    }

}

参考:http://c.biancheng.net/view/1051.html

参考答案:

答案:

题目1:

@Test//获取系统编译时异常,需要抛出异常或者进行异常捕获 try catch
public void getBuildException(){
    File file = new File("/dd");
    FileInputStream inputStream =new FileInputStream(file);
}


直接会有红线提示:
或者运行时会提示:
Error:(15, 39) java: 未报告的异常错误java.io.FileNotFoundException; 必须对其进行捕获或声明以便抛出

题目2:
public class ex {

    public static void getRunException() {
        int a = 1 / 0;
        System.out.println("异常已经出现了看我打印不打印");
    }

    public static void main(String[] args) {
       // getBuildException();
    }
}

运行时会出现:
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.benben.exception.ex.getRunException(ex.java:19)
	at com.benben.exception.ex.main(ex.java:24)


题目3:

@Test//获取系统运行时异常
public void getRunException() {
    try {
        int a = 1 / 0;
        System.out.println("异常已经出现了看我打印不打印");
    } catch (RuntimeException e) {
        System.out.println(e.getMessage() + "异常信息");
        System.out.println(e.toString() + "输出异常串");
        System.out.println("打印异常信息");
        e.printStackTrace();
    } finally {
        System.out.println("finally 输出了");
    }
}

题目4:
//抛出一个 自定义的异常,并由调用此方法的对象方法捕获后处理 throw
自定义的异常类:
Oexcetion.java

public class Oexcetion extends RuntimeException {

    final long serialVersionUID = -703407466939L;

    public Oexcetion() {
    }

    public Oexcetion(String msg) {
        super(msg);
    }
}

ex.java
class ex {
    public void biJia(int a, int b) throws Oexcetion {
        if (a < b) {
            throw new Oexcetion("出现自定义异常了");
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java21天打卡day19-异常 的相关文章

  • JNA - EnumProcessModules() 未返回所有 DLL?

    我试图从游戏中读取坐标 当我在通过 OpenProcess 接收的 HANDLE 上使用 ReadProcessMemory 以及我在 CheatEngine 中找到的内存时 效果非常好 例如 如果我知道正在运行的进程中的浮点值是0x5AB
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 通过 html tidy 提供渲染 jsp 页面

    我有一个在 Glassfish 上运行的 Java 项目 它会呈现一些难看的 HTML 这是使用各种内部和外部 JSP 库的副作用 我想设置某种渲染后过滤器 通过 HTMLTidy 提供最终的 HTML 这样源代码就很好且整洁 有助于调试
  • Java中的文字赋值[重复]

    这个问题在这里已经有答案了 定义上有什么区别 double example 23 1d or double example 23 1 为什么long float double可以以l f d结尾 之间没有区别double example 2
  • 帮助我避免 JPA、Hibernate 和 MySQL 的连接超时

    我正在使用 JPA Hibernate 作为提供者 Glassfish 和 MySQL 开发中一切都运行良好 但是当我将应用程序部署到测试服务器并让它运行 大部分空闲 过夜时 我通常会在早上遇到这样的情况 2011 03 09T15 06
  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • 如何为java注释处理器编写自动化单元测试?

    我正在尝试使用 java 注释处理器 我可以使用 JavaCompiler 编写集成测试 事实上我现在正在使用 hickory 我可以运行编译过程并分析输出 问题 即使我的注释处理器中没有任何代码 单个测试也会运行大约半秒 对于以 TDD
  • 全静态方法和应用单例模式有什么区别?

    我正在创建一个数据库来存储有关我的网站用户的信息 我正在使用 stuts2 因此使用 Java EE 技术 对于数据库 我将创建一个 DBManager 我应该在这里应用单例模式还是将其所有方法设为静态 我将使用这个 DBManager 进
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • 强制 Java 最低版本以“java -version:”运行在 Windows 上不起作用

    我想强制应用程序运行的 JVM 最低版本为 1 6 或更高版本 即 1 6 我的理解是 您可以使用 version 命令行参数来执行此操作 我尝试了一下 在Linux下似乎可以正常工作 但在Windows下却不行 LINUX 我在 Linu
  • Java 中的 MP4 容器编写器

    我想找到一个免费的 Java MP4 容器 编写器 我不需要编码器 只需要能够根据预期值写入正确原子的编码器 Bonus对于这样一个库 也可以编写 有效 F4V 我更喜欢纯 Java 解决方案 而不是使用 JNI 或外部可执行文件的解决方案
  • 在 Java 中创建带注释的对象时收到通知

    Intent 我有一个自定义 Java 注释 DynamicField public class RESTEndpointInvoker DynamicField key httpTimeout private long httpTimeo
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • javax.xml.bind.JAXBException: 类 *** 及其任何超类在此上下文中均未知

    我正在尝试通过 REST Web 服务传递对象 以下是我的课程 使用一些示例代码解释了我需要的功能 Rest Web 服务类方法 POST Path find Consumes MediaType APPLICATION FORM URLE
  • 在 REST Web 服务中接受逗号分隔值

    我正在尝试接收 REST URI 中以逗号分隔值形式的字符串列表 示例 http localhost 8080 com vogella jersey first rest todo test 1 abc test 其中 abc 和 test
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • 如何在 Log4j2 - JSON 布局中自定义或删除默认属性

    In Spring Boot 2我已配置的应用程序Log4j2 with JsonLayout像下面这样
  • 构造函数参数和属性一起出现在 bean 定义中

  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv

随机推荐

  • 军用软件国家标准

    GB T 11457 2006 信息技术 软件工程术语 SJ 20778 2000 软件开发与文档标准 GJB 2786A 2009 军用软件开发通用要求 GJB 438B 2009 军用软件开发文档通用要求 GJB 4072A 2006
  • 公司职员薪水管理系统(List)

    集合初步完成下面的功能需求 做公司职员薪水管理系统 完成以下功能 1 当有新员工时 将加入该管理系统 2 根据员工号 显示该员工信息 3 可以显示所有员工的信息 4 可以修改员工的薪水 5 当员工离职时 从该系统中删除该员工 6 可以将员工
  • Go 性能

    写性能测试在Go语言中是很便捷的 go自带的标准工具链就有完善的支持 下面我们来从Go的内部和系统调用方面来详细剖析一下Benchmark这块 Benchmark Go做Benchmark只要在目录下创建一个 test go后缀的文件 然后
  • Java项目毕业设计:电脑城销售商城网站(java+springboot+vue+mysql)

    运行环境 开发工具 IDEA Eclipse 数据库 MYSQL5 7 应用服务 Tomcat7 Tomcat8 使用框架springboot vue 项目介绍 随着科技的发展 人们对电子产品的依赖越来越严重 尤其是像电脑和手机这些日常生活
  • 前端获取数据常见的几种方法

    1 原生获取ajax
  • requset-使用BeanUtils封装表单提交的数据到javaBean对象中

    request对象请求参数过多 可以将数据封装到对象 使用BeanUtils解决这个问题 设置一个登录页面准备提交表单数据 username password 导入BeanUtils相关jar包 创建Servlet获取请求参数 调用Bean
  • 84.柱状图中最大的矩形

    84 柱状图中最大的矩形 给定 n 个非负整数 用来表示柱状图中各个柱子的高度 每个柱子彼此相邻 且宽度为 1 求在该柱状图中 能够勾勒出来的矩形的最大面积 示例 1 输入 heights 2 1 5 6 2 3 输出 10 解释 最大的矩
  • vim 删除一整块,vim 删除一整行

    陈永鹏的微博 陈永鹏的csdn博客地址 http blog csdn net chenyoper陈永鹏的博客园地址 http www cnblogs com Yoperchen dd 删除游标所在的一整行 常用 ndd n为数字 删除光标所
  • JavaScript判断数组是否为空、 判断数据类型

    数组 let arr 在进行if 判断数组时 在new Array 一个空数组时 是一个Object对象 所以if arr 时是true 在进行数组直接与true和false的布尔类型比较时 默认是将数组和布尔类型都转化为了Number类型
  • Vtk多个actor绑定选中事件

    Vtk多个actor绑定选中事件 1 交互只有 放大 移动 沿着z轴旋转 2 增加选中回调 3 增加部分模型隐藏 效果 项目地址 在官方案例基础上改的 案例 https kitware github io vtk examples site
  • 后端系统开发之工作和面试中的gdb

    gdb是C C 程序员必备的专业技能 工作中gdb最常用的场景有两个 一个是分析core文件 另一个是调试程序 分析core文件的方法如下 1 gdb 程序名 core文件名 2 bt或where命令查看堆栈信息 3 进入某个栈 f N f
  • Ubuntu + CUDA9.0 + tensorflow-gpu 安装过程

    Ubuntu CUDA9 0 tensorflow gpu 安装过程 简介 tensorflow支持CUDA9 0和cuDNN7 0 因此本教程是在该版本基础上进行安装的 我的电脑CPU是Intel core i7 4710MQ GPU是G
  • torch.nn.Embedding是否有梯度,是否会被训练

    结论 会被训练 测试代码 import torch from torch nn import Embedding class Model torch nn Module def init self super Model self init
  • 微信小程序自定义顶部导航,滚动页面顶部导航颜色渐变

    微信小程序自定义顶部导航栏 使背景图置顶 当向上滚动页面时 实现顶部导航颜色渐变 效果图 实现方法 一 在pages json中设置 navigationStyle custom 代码如下 示例 path pages home home s
  • 软件设计中划分模块的一个准则是_____。 A 低内聚低耦合 B 低内聚高耦合 C 高内聚低耦合 D 高内聚高耦合...

    在软件设计中 一个常用的模块划分准则是 低内聚低耦合 也就是选项 A 这意味着在设计模块时 应当尽量使每个模块内的内容相关性较高 同时使模块之间的耦合较低 这样可以使得模块之间的依赖关系更加清晰 更容易维护和管理
  • IDEA 无法正确install springboot以及其他maven dependency

    java Maven plugins can not be found in IntelliJ Stack Overflow 由于使用了私有的maven仓库 我在 m2 下面设置了setting xml 然后就怎么也没法自动install
  • Atmel studio 出现expected identifier before ‘(’ token解决

    从网上复制了一份代码 粘贴的时候出错expected identifier before token 最关键的是每一行都报错 错的我怀疑人生 就算C语言在差也不至于一个错误都看不出来吧 搞了两个小时发现是空格的问题 嗨 心累 网上找了一个在
  • 【kali】28 提权——读取windows本地密码:pwddump、WCE、fgdump、mimikatz

    这里写自定义目录标题 一 抓包嗅探 二 键盘记录本地密码 三 查看本地缓存密码 1 浏览器查看密码 2 密码恢复工具 3 使用 Pwdump 查看 windows 本地登录密码 4 了解windows身份认证过程 5 WCE WINDOWS
  • Elasticsearch性能优化

    问题导读1 集群规划有哪些优化措施 2 磁盘该如何选择 3 内存该如何分配中 4 索引优化有哪些方法 5 数据模型优化包含哪些内容 0 题记Elasticsearch性能优化的最终目的 用户体验爽 Elasticsearch的爽点就是 快
  • Java21天打卡day19-异常

    异常 异常分类 编译时异常 程序编译时的异常例子 IO异常 SQL异常 运行时异常的区别 程序在运行时出现的异常 会自动抛出该异常 异常处理 try catch finally处理异常 throws 和 throw 的区别 throws是用