Java throws 使用

article/2025/10/3 21:57:37

在开发中,如果去调用别人写的方法时,是否能知道别人写的方法是否会发生异常?这是很难判断的。针对这种情况,Java总允许在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样调用者在调用方法时,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。

如下面代码


package www.kangxg.jdbc;public class Example {public static void main(String[] args) {// TODO Auto-generated method stubint result = divide(4,2);System.out.println(result);}public static int divide(int x,int y) throws Exception{int result = x/y;return result;}}
这时候 编译器上会有错误提示  Unhandled exception type Exception

所以需要对调用divide()方法进行try...catch处理


package www.kangxg.jdbc;public class Example {public static void main(String[] args) {try {int    result = divide(4,2);System.out.println(result);} catch (Exception e) {e.printStackTrace();}}public static int divide(int x,int y) throws Exception{int result = x/y;return result;}}

debug 运行程序

当 调用divide()方法时,如果不知道如何处理声明抛出的异常,也可以使用throws 关键字继续抛异常,这样程序也能编译运行。但是注意的是,程序一旦发生异常,如果没有被处理,程序就会非正常终止。如下:

package www.kangxg.jdbc;public class Example {public static void main(String[] args) throws Exception {int    result = divide(4,0);System.out.println(result);}public static int divide(int x,int y) throws Exception{int result = x/y;return result;}}

  

debug运行程序

 

 



Java 运行时异常与编译时异常

1. 编译时异常

   在Java 中,Exception类中除了RuntimeException 类及其子类外都是编译时异常。编译时异常的特点是Java编译器会对其进行检查,如果出现异常就必须对异常进行处理,否则程序无法编译通过。

  处理方法

   使用try... catch 语句对异常进行捕获

   使用throws 关键字声明抛出异常,调用者对其进行处理

2.运行时异常

  RuntimeException 类及其子类运行异常。运行时异常的特点是Java编译器不会对其进行检查。也就是说,当程序中出现这类异常时,即使没有使用try... catch 语句捕获使用throws关键字声明抛出。程序也能编译通过。运行时异常一般是程序中的逻辑错误引起的,在程序运行时无法修复。例如 数据取值越界。

三 自定义异常

  JDK中定义了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况。例如divide()方法中不允许被除数为负数。为类解决这个问题,在Java中允许用户自定义异常,但自定义的异常类必须继承自Exception或其子类。例子如下


package www.kangxg.jdbc;public class DivideDivideByMinusException  extends Exception {/*** */private static final long serialVersionUID = 1L;public DivideDivideByMinusException(){super();}public DivideDivideByMinusException(String message){super(message);}
}

 

package www.kangxg.jdbc;public class Example {public static void main(String[] args) throws Exception {try {int    result = divide(4,-2);System.out.println(result);} catch (DivideDivideByMinusException e) {System.out.println(e.getMessage());}}public static int divide(int x,int y) throws DivideDivideByMinusException{if(y<0){throw new DivideDivideByMinusException("被除数是负数");}int result = x/y;return result;}}

  

Debug 运行


 



http://chatgpt.dhexx.cn/article/wWxjFjoH.shtml

相关文章

【JavaSE】throws 异常处理

文章目录 1. 基本介绍2. 快速入门案例3. 注意事项和使用细节 1. 基本介绍 如果一个方法(中的语句执行时)可能生成某种异常&#xff0c;但是并不能确定如何处理这种异常&#xff0c;则此方法应显示地声明抛出异常&#xff0c;表明该方法将不对这些异常进行处理&#xff0c;而由…

throws异常

在程序开发过程中&#xff0c;程序员会尽量避免错误的发生&#xff0c;但是总会发生一些不可预测的事情&#xff0c;例如除法运算时除数为0 、内存不足、栈溢出等&#xff0c;这些就是异常&#xff0c;java语言提供了异常的处理机制&#xff0c;处理一些不可预期的事情。 使用t…

Elasticsearch之利用bulk提高写入性能(含源码分析)

什么是bulk操作 bulk是批量的意思&#xff0c;也就是把原来单个的操作打包好&#xff0c;通过批量的api提交到ES集群。下面是个示例&#xff1a; 单个操作&#xff1a; PUT my-index-000001/_doc/1 {"timestamp": "2099-11-15T13:12:00","message&…

.NET5必备工具——EF大数据批量处理----Bulk系列

之前做项目的时候&#xff0c;如果在大批量操作数据时,性能不好.因为在框架中使用了EntityFramework&#xff0c;于是就搜索到某著名插件,Z系列。 1.安装 然后在类里面添加引用之后,使用DbContext就可以直接点出来。 2.博客园有人做过对比试验 我们直接拿数据说话吧. EF传统…

初识ElasticSearch(5) -批量操作之bulk | 条件查询 | 其它查询

1. bulk&#xff1a;1.1. bulk语法&#xff1a;1.2. bulk行为-增删改&#xff1a; 2. bulk-index批量插入&#xff1a;3. bulk-update批量修改&#xff1a;4. bulk-delete批量删除&#xff1a;5. _update_by_query条件更新&#xff1a;6. _delete_by_query条件删除&#xff1a;…

mysql bulkupdate_Bulk Upsert for MySQL PostgreSQL

什么是 Upsert "UPSERT" is a DBMS feature that allows a DML statements author to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead, while safely giving little to no further thought to con…

JPA 2.1: Bulk Update and Delete

为什么80%的码农都做不了架构师&#xff1f;>>> JPA 2.1: Bulk Update and Delete In the JPA 2.0 and early version, if you want to execute a bulk updating query, you have to use update or delete clause in JPQL directly. JPA 2.1 introduce new Criteri…

ElasticSearch提供的bulk update性能对比

目的&#xff1a;为了对比update的数据中重复数据对性能的影响。

Java面试智力题逻辑题汇总2021

rand5()能够生成0-4的随机数 rand7()能够生成0-6的随机数 已知rand7()生成rand5() 已知rand5()生成rand7()

面试智力题精选:扑克牌问题

袁方同学在玩扑克牌。这幅扑克牌比较特别&#xff0c;没有花色&#xff0c;只有点数。每张牌的点数是1&#xff0c;2&#xff0c;3&#xff0c;...,20。一共20张牌。袁方把牌洗了很多遍以后&#xff0c;把所有牌正面朝下垒成一堆放在自己手上。他翻第一张牌&#xff0c;发现是1…

大厂面试常见智力题

1. 64匹马,8个赛道,找出前4名最少比赛多少场? 这是一道经常考的智力题 64匹马&#xff0c;我们要想知道哪匹&#x1f40e;跑的最快&#xff0c;前提条件是每一匹&#x1f40e;都要去比赛一场。所以刚开始的赛马规则是每匹马都要进行一次比赛。 步骤1: 把 64匹&#x1f40e;…

盘点面试中常见的智力题

由于某些不可抗力&#xff0c;几篇文章做了删除&#xff0c;重新上架&#xff0c;希望于你有益。 面试为何会出现智力题&#xff1f; 可能是为了考察应聘者的综合分析能力、逻辑思维能力、反应能力和解决问题能力吧~ 也可能是...... “我去&#xff01;这面试者能力可以啊&…

面试中常见的智力题

文章目录 一、提灯过桥问题&#xff1f;二、有两个鸡蛋&#xff0c;如何最快的试出100层楼中刚好那一层扔下鸡蛋会碎&#xff1f;三、在地球什么地方能够&#xff0c;往南走1公里&#xff0c;然后往东走1公里&#xff0c;再往北走1公里能回到原点&#xff1f;四、一块N x M的巧…

面试中常见智力题汇总

面试中常见智力题汇总 1. 二进制问题1.1 毒药问题1.2 分金块问题 2. 先手必胜问题2.1 抢 30的必胜策略2.2 100本书&#xff0c;每次能够拿1~5本&#xff0c;怎么拿能保证最后一次是你拿&#xff1f;2.3 轮流拿石子 3. 推理题3.1 掰巧克力问题3.2 辩论赛问题3.3 在24小时里面时针…

2020秋招华为笔试题-买钉子

1.题目描述 2.代码实现 主要思路&#xff1a;类似零钱兑换 #include <iostream> #include <vector> using namespace std;class Solution { public:int buyNails(vector<int>& nails, int count) {vector<int> dp(count1, -1);dp[0] 0;for(int …

华为2022硬件逻辑笔试题

单选题&#xff08;每题两分&#xff09; 1.以下关于过程赋值的描述&#xff0c;不正确的是&#xff08;&#xff09; A在非阻塞性过程赋值中&#xff0c;使用赋值符号“< ” B赋值操作符是“”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中&#xff0c;对目标的赋…

AJAX原理快速入门

AJAX的原理 Ajax 的原理简单来说通过 XmlHttpRequest 对象来向服务器发异步请求&#xff0c;从服务器获得数据&#xff0c;然后用 javascript 来操作 DOM 而更新页面的局部显示。 Ajax 的优点&#xff1a; 1.最大的一点是页面无刷新&#xff0c;给用户的体验非常好。 2.使用异…

Ajax详解~及原理刨析

目录 什么是Ajax 同步和异步 Ajax如何实现异步和局部刷新 Ajax工作原理 Ajax工作流程 1、创建XMLHttpRequest对象 2、创建HTTP请求 3、向服务器发送数据 4、设置回调函数 &#xff0c;在回调函数中针对不同的响应状态进行处理 完整实例 Jquery中的ajax 什么是Ajax…

和vue相似的ajax原理及vue中运用ajax

和vue相似的ajax原理及vue中运用ajax。 一&#xff0c;默认的app.vue/文件 App.vue     App.vue是项目的主组件&#xff0c;页面入口文件 &#xff0c;所有页面都在App.vue下进行切换&#xff0c;app.vue负责构建定义及页面组件归集。                二&…

ajax工作原理

ajax工作原理 在写这篇文章之前&#xff0c;曾经写过一篇关于AJAX技术的随笔&#xff0c;不过涉及到的方面很窄&#xff0c;对AJAX技术的背景、原理、优缺点等各个方面都很少涉及null。这次写这篇文章的背景是因为公司需要对内部程序员做一个培训。项目经理找到了我&#xff0…