try-catch和throw,throws的区别和联系

2023-10-29

区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常;


throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。如果一个方法会有异常,但你并不想处理这个异常,就在方法名后面用throws,这样这个异常就会抛出,谁调用了这个方法谁就要处理这个异常,或者继续抛出.
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别二:throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException

联系一:try .... catch 就是用catch 捕获 try 中的异常,并处理;catch是捕获异常。也就是说某一个操作有可能会抛出什么异常。throw 就是不处理异常,直接抛出异常

 

调用一个会throws exception的方法(在方法定义的时候可以用throws实现)时,需要把这个方法放在try里,然后用catch破获这个exception,做相应的处理。

throw new exception()是抛出一个exception,由别的method来破获它。

 

也就是说try....catch是为破获别人的exception用的,而throw是自己抛出exception让别人去破获的。

 

public void input() throws Exception

{ }

public void outputException()

{

   try {

       input();

}

catch(Exception e)

{

System.out.println("Exception");

}

}

 

简单的说,如果一个方法中用了throws,那么这个方法会向上抛出一个异常,那么在调用这个方法的时候必须把这个调用放在try...catch块里处理这个异常。

 

对于异常有两种处理方法

1、要么声明异常,也就是在方法名后面加上throws exceptionname,..., 方法本身只是抛出异常,由函数调用者来捕获异常。 若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。

2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。

 

联系二:对于会觉得会有异常抛出的程序块,用try{}包住,然后用catch来抓住这个异常,在catch中对异常做处理, 在try中如果有异常的话,程序会转到catch而不会中断,通常这两个是配合使用的,如果你不想因为程序有错,而抛出一大堆异常的话,你就把该程序try起来,trycatch只能获取程序运行时引发的异常,而throw语句可以引发明确的异常,程序到了throw语句这后就立即停止,不会执行后面的程序,

 

大家也许在编程的过程中,会意识到这里出错,但不知道会抛出什么异常,也是一件头疼的事,现将这部分总结如下:

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

try-catch和throw,throws的区别和联系 的相关文章

随机推荐

  • javascript 将数组转换为字符串方法总结

    1 String arr 输出数组的每个元素值 用逗号分隔 2 arr join 分隔符 输出数组的每个元素之 用指定的分隔符分隔
  • 循环队列的实现(初始化、入队操作、出队操作、判满、判空、获取队头、队尾元素、销毁操作)

    typedef struct int array int front int rear int count 用count 的方式判断循环队列是否满 int N 总个数 MyCircularQueue 初始化 MyCircularQueue
  • 宝塔面板最全最快搭建https访问网站终极版教程

    我的个人博客 网址 https www minikuba com 迷你酷吧是一个基于程序员经验为基础分享技术文章 算法解题 大厂面试真题 热门项目的平台 致力于为大家提供更多涵盖前后端技术 技能的学习 助力广大热衷编程开发者全面发展 本文章
  • 动态集合和静态集合的不同

    ul li 1 li li 2 li li 3 li li 4 li li 5 li li 6 li ul
  • 铰接式车辆的横向动力学仿真提供车辆模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 铰接式车辆是一种具有铰接连接的多体系统 具
  • 【乌拉喵.教程】不同负载下继电器的保护电路设计(解决继电器触点粘接的问题)

    最近将多年来收集到的教学视频 国内外图书 源码等整理整合拿出来 涉及arm Linux python 信号完整性 FPFA DSP 算法 stm32 单片机 制图 电子模块 kali 出版社图书等 资料目前约1 5TB 详情 1 5TB 电
  • 当Selenium遇到TestNG

    当Selenium遇到TestNG 用 Selenium 测试 Web 页面时 所重现的各种行为依赖于测试人员的输入参数 例如 选择下拉餐单的项目 在文本框中输入字符等 不同的测试用例对应不同的输入 若有方法能够简单 有效的传入测试用参数
  • 图片自适应屏幕大小的css写法

    如果想让图片自适应屏幕的小而不是宽高固定不变可以在css代码里加入 img height auto width auto 9 width 100 用max width设置如果图片尺寸大于当前浏览器尺寸就自动缩放 图片的高度设置正比缩放 但是
  • 设计模式七大原则详解

    文章目录 一 java为什么要有设计模式 二 设计模式七大原则 三 单一职责原则 四 接口隔离原则 五 依赖倒转原则 六 里氏替换原则 七 开闭原则 八 迪米特法则 一 java为什么要有设计模式 写代码就像建楼房一样 要考虑到它后期是否以
  • 从0开始学go第四天

    模板继承 继承根模板 重新定义 块模板 Go Web开发系列教程 07 Go模板继承 哔哩哔哩 bilibili 解析模板时 base模板要在前 渲染模板时 要用ExecuteTemplate 而不是Excute 模板补充 Go语言标准库之
  • 电子竞赛项目回顾——基于多物料识别分拣的离线式监管工业流水线系统

    1 项目简介 本项目融合了工业物联网技术 FPGA图像处理等技术 针对工业流水线上的多物料分拣 提出了一种自下而上全自动化式 工厂监管离线式的解决方案 工厂内部所有的控制层 感知层均通过无线传输层与工厂总控主机相连 同时主机实时将工厂运行的
  • linux之关机、重启命令

    Linux几种关机 重启 相关命令 在linux下一些常用的关机 重启命令有shutdown halt reboot 及init 它们都可以达到重启系统的目的 但每个命令的内部工作过程是不同的 通过本文的介绍 希望你可以更加灵活的运用各种关
  • Tree 【POJ - 3237】【树链剖分+一些特殊的处理】

    题目链接 这道题 说来还的确困扰了我一个多小时 当时就在想 我该如何处理那些边权 我将边化为点 以及点 默认权值为0 的取相反数后的处理 因为点取相反数之后还是0 会困扰到那些边的 然后 我想到了 如果这段区间的返回的值为0 那么就说明了肯
  • podman 是什么?和 docker 有什么区别?

    什么是 podman Podman 是一种无守护进程的容器引擎 可以创建 管理和运行 OCI 容器 容器可以以非 root 身份运行 也可以使用 root 身份运行 Podman 是由 Red Hat 开发 从 Red Hat Enterp
  • 【BAT 多IF条件实例】

    echo off start 设置常用过滤关键字 set key1 202008 set key2 202009 set key3 20200919 打印出常用关键字 echo 1 key1 2 key2 3 key3 读取用户输入 set
  • Android Studio Git功能使用

    Android Studio Git功能使用 简介 常用功能 提交代码到远程分支 合并分支代码 拉新分支 简介 在Android Studio中使用自带的Git管理工具来进行版本管理 可以轻松应对需要频繁进行本地分支和远程分支操作的项目 比
  • 成功解决pip/conda install cartopy安装失败问题

    使用pip 或conda 安装cartopy pip install cartopy 报错 ERROR Command errored out with exit status 1 command home mlli anaconda3 e
  • 前端学习笔记

    笔记 小知识 V ON绑定事件 V BIND绑定属性 Network中可以查看当前发起的请求 XHR这个标签出现在Chrome浏览器的开发者工具Network选项卡中 XHR类型即通过XMLHttpRequest方法发送的请求即AJAX请求
  • (React入门)状态state与属性props

    状态 State State介绍 状态 state 使用this state来引用 state本身就是状态的意思 状态指的是事物所处的状况 状况就是环境 通常使用state存储简单的视图状态 比如说下拉框是否显示 单选 是否选中 或者需要自
  • try-catch和throw,throws的区别和联系

    区别一 throw 是语句抛出一个异常 throws 是方法抛出一个异常 throw语法 throw lt 异常对象 gt 在方法声明中 添加throws子句表示该方法将抛出异常 如果一个方法会有异常 但你并不想处理这个异常 就在方法名后面