Java throws关键字

news2025/2/27 0:38:14

Java的throws关键字用于声明异常。它向程序员提供了可能发生异常的信息。

因此,最好为程序员提供异常处理代码,以便保持程序的正常流程。

异常处理主要用于处理已检查异常。如果出现任何未检查的异常,例如NullPointerException,则是程序员的错误,他在使用代码之前没有进行检查。

Java throws的语法

return_type method_name() throws exception_class_name{  //方法代码}

哪些异常应该声明?

答:只有已检查的异常,因为:

  • 未检查的异常:在我们的控制范围内,因此我们可以纠正我们的代码。

  • 错误:超出我们的控制范围。例如,如果发生VirtualMachineError或StackOverflowError,我们无法做任何事情。

Java throws关键字的优点

现在可以传播(在调用堆栈中转发)已检查的异常。

它向方法的调用者提供关于异常的信息。

Java throws示例

让我们看一下Java throws子句的示例,该示例说明了可以使用throws关键字传播已检查的异常。

Testthrows1.java

import java.io.IOException;  class Testthrows1{    void m()throws IOException{      throw new IOException("device error");//checked exception    }    void n()throws IOException{      m();    }    void p(){     try{      n();     }catch(Exception e){System.out.println("exception handled");}    }    public static void main(String args[]){     Testthrows1 obj=new Testthrows1();     obj.p();     System.out.println("normal flow...");    }  }

输出:

exception handlednormal flow...

有两种情况:

  1. 情况1:我们捕获了异常,即我们使用try/catch块处理了异常。

  2. 情况2:我们声明了异常,即在方法中使用了throws关键字。

情况1:使用try-catch块处理异常

如果我们处理了异Java throws关键字

import java.io.*;  class M{   void method()throws IOException{    throw new IOException("device error");   }  }  public class Testthrows2{     public static void main(String args[]){      try{       M m=new M();       m.method();      }catch(Exception e){System.out.println("exception handled");}           System.out.println("normal flow...");    }  }

输出:

exception handled       normal flow...

情况2:声明异常

  • 如果我们声明了异常,且异常未发生,代码将正常执行。

  • 如果我们声明了异常且异常发生,它将在运行时抛出,因为throws不处理异常。

让我们为这两种情况看一些示例。

A) 如果异常未发生

Testthrows3.javaimport java.io.*;  class M{   void method()throws IOException{    System.out.println("device operation performed");   }  }  class Testthrows3{     public static void main(String args[])throws IOException{//声明异常     M m=new M();       m.method();        System.out.println("normal flow...");    }  }

输出:

device operation performed       normal flow...
 

B) 如果异常发生

Testthrows4.java

import java.io.*;  class M{   void method()throws IOException{    throw new IOException("device error");   }  }  class Testthrows4{     public static void main(String args[])throws IOException{//declare exception       M m=new M();       m.method();        System.out.println("normal flow...");    }  }
 

输出:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jjy-shareV2.0一键分享到微博,QQ空间,QQ好友,微信

介绍 jjy-shareV2.0一键分享到微博,QQ空间,QQ好友,微信 作者:极纪元-橙 作者博客:https://cplvfx.blog.csdn.net/ 码云Gitee:橙cplvfx极纪元 (cplvfx) - Gitee.com 项目地址:jjy-shareV2.…

登录认证(全集)--jwt,Filter,Interceptor详细说明

一、登录校验 问题:在未登录情况下,我们也可以直接访问部门管理、员工管理等功能。由于浏览器与web服务器中的数据交互是通过HTTP协议的,而HTTP协议是无状态的–即每个页面中的请求和响应都是独立的,没有状态存在。所以我们需要进…

WordPress网站的robots文件代码怎样写比较好

本文记载和介绍的是wordpress的robots.txt的在哪儿?以及如何修改robots文件来禁止搜索引擎爬取/ajax目录下的文章。以及如何优化WordPress网站的robots文件 wordpress设置robots文件的目录:/wp-includes/functions.php,然后搜索do_robotstxt…

【雕爷学编程】Arduino动手做(123)---Multi-function扩展板

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

随机数检测(一)

随机数检测(一)- 随机数自测试概述 1 概述2 产品形态划分和检测项目3 测试方式3.1 概述3.2 单比特频数检测方法3.3块内频数检测方法 1 概述 随机数发生器设计完成后,使用随机数发生器的产品需对其执行测试,防止应用过程中产生不合…

Redis的数据类型及对应的数据结构(二)

接上篇:Redis的数据类型及对应的数据结构(一)_鱼跃鹰飞的博客-CSDN博客 本篇主要讨论剩下的几种数据结构的应用场景 应用场景 集合的主要几个特性,无序、不可重复、支持并交差等操作。 因此 Set 类型比较适合用来数据去重和保…

卧剿,6万字!30个方向130篇!CVPR 2023 最全 AIGC 论文!一口气读完。

一杯奶茶,成为 AIGCCV 视觉前沿弄潮儿! 25个方向!CVPR 2022 GAN论文汇总 35个方向!ICCV 2021 最全GAN论文汇总 超110篇!CVPR 2021 最全GAN论文梳理 超100篇!CVPR 2020 最全GAN论文梳理 在最新的视觉顶会 C…

Java多重捕获块

try块后面可以跟随一个或多个catch块。每个catch块必须包含一个不同的异常处理程序。因此,如果您在不同的异常发生时需要执行不同的任务,请使用Java多重捕获块。 需要记住的要点 一次只会发生一个异常,同时只有一个catch块被执行。 所有的ca…

实训五:数据库安全控制 - MySQL数据库 - 授权与撤销授权

MySQL数据库 - 授权与撤销授权 第1关:数据库授权任务描述相关知识用户管理授权方式 编程要求测试说明参考代码 第2关:数据库撤销权限任务描述相关知识撤销权限 编程要求测试说明参考代码 第1关:数据库授权 任务描述 本关任务:新…

Ubuntu安装Anaconda详细步骤(Ubuntu22.04.1,Anaconda3-2023.03)

本文主要讲述了在Ubuntu中安装anaconda的具体步骤 准备环境:Ubuntu22.04.1,Anaconda3 1.下载Anaconda3 在清华镜像下载Linux版本的anaconda 清华镜像官网Anaconda下载 我选择的是Anaconda3-2023.03-Linux-x86_64.sh 下载好的Anaconda3-2023.03-Linux-…

拦截器Interceptor及与过滤器Filter的区别

统一拦截–拦截器Interceptor 1.概述 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。与过滤器Fil…

【Java|多线程与高并发】设计模式-单例模式(饿汉式,懒汉式和静态内部类)

文章目录 1. 前言2. 单例模式3. 如何保证一个类只有一个实例4. 饿汉式单例模式5. 懒汉式单例模式6. 实现线程安全的懒汉式单例7. 静态内部类实现单例模式8. 总结 1. 前言 设计模式是一种在软件开发中常用的解决复杂问题的方法论。它提供了一套经过验证的解决方案,用…

通信原理概述

通信是指人们通过某种媒介进行信息传递。通过某种介质或通道,将信息从一个地点传递到另一个地点的过程。通信可以是人与人之间的交流,也可以是设备、系统或网络之间的数据传输。 通信信号的分类方法: 1)模拟信号和数字信号(从信号…

数字游戏:如何统计能整除数字的位数?

本篇博客会讲解力扣“2520. 统计能整除数字的位数”的解题思路,这是题目链接。 本题的思路是:取出每一位,判断是否能整除。 如何取出每一位呢?可以采用“mod10除10”的策略。即:每次mod10取出最后一位数,再…

2022年软件测试面试题大全【含答案】

一、面试基础题 简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(…

C++面向对象 this指针 构造函数 析构函数 拷贝构造 友元

C面向对象 面向对象概念类与对象的区别 C中类的设计设计实例实例解释共有和私有类的认识 函数定义函数在类里定义和类外定义区别函数定义实例 C对象模型方案一:各对象完全独立地安排内存的方案方案二:各对象的代码区共用的方案: this指针this指针特点程序编译面向对象程序的过程…

【力扣刷题 | 第十四天】

目录 前言: 7. 整数反转 - 力扣(LeetCode) 面试题 16.05. 阶乘尾数 - 力扣(LeetCode) 总结; 前言: 今天仍然是无固定类型刷题, 7. 整数反转 - 力扣(LeetCode) 给你…

傅氏变换算法

半局积分算法的局限性是要求采样的波形为正弦波。当被采样的模拟量不是正弦波而是一个周期性时间函数时,可采用傅氏变换算法。傅氏变换算法来自于傅里叶级数,即一个周期性函数I(t)可用傅里叶级数展开为各次谐波的正弦项和余弦项之…

D117-72. 编辑距离

题目描述 链接:添加链接描述 跟只考虑删除的完全一样,只不过是dp[i-1][j-1]1 class Solution:def minDistance(self, word1: str, word2: str) -> int:# dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2&…

Qt 将某控件、图案绘制在最前面的方法,通过QGraphicsScene模块实现

文章目录 前言一、效果二、代码实现1.工程文件夹结构2.BackWidget类2.1 backwidget.h2.2 backwidget.cpp 总结 前言 在用Qt做一些应用的时候,有可能遇到和“绘制顺序”相关的问题,即要控制一些控件之间的显示前后问题,在常用的QWidget体系中&…