Java中try catch的原则
一:使用try catch的场合
如果不使用这种try结构时,代码报错退出就无bai法继续执行。有的代码出错就应该退出,有的出错尚可以补救,就不应该退出。对于这种出错不应该退出的就需要使用这种结构,在catch中进行补救。
二:使用try catch的规则
a.尽量不要将try…catch写在循环中。
b.如果能捕获多个异常,那么先捕获小异常,在捕获大异常
try {// ....} catch (RuntimeException e) {//小异常//处理1} catch (Exception e) {//中异常//处理2} catch (Throwable t) {//大异常//处理3}
c.try{ .....}代码块里面的代码尽量的少,避免出现大段大段的代码
d.catch( ) 尽量避免使用万能代码捕获所有的异常,比如
try { //代码
} catch (Throwable t) {//这样写就捕获了所有异常,不便于区分处理//Throwable 是错误和异常的父类
}
e.适当配合finally代码块
finally可以没有,有的话只能有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。finally总是要执行,这以可以在异常处理最后做一些清理工作。如关闭IO流等。
try {//IO流代码} catch (IOException e) {}finally {ioinput.close();//流的关闭}
参考
Java中try catch的原则相关推荐
- Java中try catch语句的用法
在 Java 中通常采用 try catch 语句来捕获异常并处理.语法格式如下: try { 逻辑代码块1; } catch(ExceptionType e) { 处理代码块1; ...
- java中的内存分配原则
问题:Java中这些类.变量.字符串.方法,在内存中是怎样分配的? 首先,Java中的内存区域如下: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是 ...
- java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备
多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...
- Java中try catch finally语句中含有return语句的执行情况
最近刷笔试题遇到的问题,记录下来. 在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那 ...
- 浅谈Java中try catch 的用法
我们编译运行程序出错的时候,编译器就会抛出异常.抛出异常要比终止程序灵活许多,这是因为 的Java提供了一个"捕获"异常的的处理器(处理器)对异常情况进行处理. 如果没有提供处理器 ...
- java中try...catch处理异常
public class TryCatchStu { /*try catch:自己处理异常 *try{ * 可能出现异常的代码 *}catch(异常类名A e){ * 如果出现了异常 ...
- 英雄联盟的小案例理解Java中如何实现OCP原则
案例: 英雄联盟的英雄.道具.地图,每年都会进行频繁变更 如果没有使用软件工程的开发思想,随便改其中一个道具的属性,就可能会导致非常严重的错误 要实现变更/增加英雄时,可选英雄数量和玩家开始一局游戏时 ...
- java中线程调度遵循的原则_Java 多线程(三) 线程的生命周期及优先级
线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: 当用new操作符创建一个新的线程对象时,该线程处 ...
- java中try catch的中断规则
如果try中发生异常,则try块中的代码不会继续执行,直接执行catch中的代码,但是try catch 后的代码会正常执行. 如果throw异常的话,会执行finally中的代码,其他代码不执行.
最新文章
- 手动增加swap空间
- POJ2446 模板盖格子 简单二分匹配
- Elasticsearch 字段数据类型
- 在sublime中直接运行python代码
- Dapr闪电说 - Dapr落地云原生架构
- asp.net mvc 包含了一个 html 的助手类在哪里,c# - 在App_Code中使用@HTML的ASP.NET MVC Razor Helper - 堆栈内存溢出...
- mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...
- 1503171912-ny-一道水题
- [HDOJ5734]Acperience(数学,公式推导)
- 树莓派安装smbus_树莓派安装wiringPi,BCM2835,以及python的RPI.GPIO
- 带拼音计算机语言翻译软件,拼音转换汉字翻译器
- 2017江苏高职计算机分数线,2017年江苏高考分数线公布
- 云流化如何实现多人线上协作的?
- PVR个人视频录像机 - XBMC 12.0(Frodo)新功能
- 漫话:如何给女朋友解释什么是CDN?
- 几种闪存技术:eMMC、UFS2.1、UFS3.0、SSD
- 软件设计七大原则实战(二)-开闭原则
- 计算机考研复试会问什么专业问题,跨专业考研复试会问哪些问题
- VUE写一个顶部导航栏
- 【17ce】运维站点监测和测速网站
热门文章
- 迈足狂奔!铁塔公司:目前北京已建好4400多座大型5G基站
- 一加7 Pro在京东开启预约:人数超34万
- 从苹果换回安卓是什么体验?
- 大家一起看广告?微信朋友圈广告@好友评论互动功能全量开放
- 三个常用c++11特性
- robotac属于a类还是b类_工程项目分类A类、B类、C类、D类项目是指什么?注意:不是资料的A、B、C类报建资料...
- python清空集合_python集合的操作
- 摄像头图像分析目标物体大小位置_对智能驾驶系统三种环境传感器布局的冗余关系分析...
- ffmpeg 2.6.3在Windows系统MinGW的编译
- oracle的sqlload遇到超长,oracle sqlload