一:使用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的原则相关推荐

  1. Java中try catch语句的用法

    在 Java 中通常采用 try catch 语句来捕获异常并处理.语法格式如下:  try {     逻辑代码块1; } catch(ExceptionType e) {     处理代码块1; ...

  2. java中的内存分配原则

    问题:Java中这些类.变量.字符串.方法,在内存中是怎样分配的? 首先,Java中的内存区域如下: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是 ...

  3. java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  4. Java中try catch finally语句中含有return语句的执行情况

    最近刷笔试题遇到的问题,记录下来. 在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那 ...

  5. 浅谈Java中try catch 的用法

    我们编译运行程序出错的时候,编译器就会抛出异常.抛出异常要比终止程序灵活许多,这是因为 的Java提供了一个"捕获"异常的的处理器(处理器)对异常情况进行处理. 如果没有提供处理器 ...

  6. java中try...catch处理异常

    public class TryCatchStu {  /*try catch:自己处理异常   *try{   * 可能出现异常的代码   *}catch(异常类名A e){   * 如果出现了异常 ...

  7. 英雄联盟的小案例理解Java中如何实现OCP原则

    案例: 英雄联盟的英雄.道具.地图,每年都会进行频繁变更 如果没有使用软件工程的开发思想,随便改其中一个道具的属性,就可能会导致非常严重的错误 要实现变更/增加英雄时,可选英雄数量和玩家开始一局游戏时 ...

  8. java中线程调度遵循的原则_Java 多线程(三) 线程的生命周期及优先级

    线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: 当用new操作符创建一个新的线程对象时,该线程处 ...

  9. java中try catch的中断规则

    如果try中发生异常,则try块中的代码不会继续执行,直接执行catch中的代码,但是try catch 后的代码会正常执行. 如果throw异常的话,会执行finally中的代码,其他代码不执行.

最新文章

  1. 手动增加swap空间
  2. POJ2446 模板盖格子 简单二分匹配
  3. Elasticsearch 字段数据类型
  4. 在sublime中直接运行python代码
  5. Dapr闪电说 - Dapr落地云原生架构
  6. asp.net mvc 包含了一个 html 的助手类在哪里,c# - 在App_Code中使用@HTML的ASP.NET MVC Razor Helper - 堆栈内存溢出...
  7. mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...
  8. 1503171912-ny-一道水题
  9. [HDOJ5734]Acperience(数学,公式推导)
  10. 树莓派安装smbus_树莓派安装wiringPi,BCM2835,以及python的RPI.GPIO
  11. 带拼音计算机语言翻译软件,拼音转换汉字翻译器
  12. 2017江苏高职计算机分数线,2017年江苏高考分数线公布
  13. 云流化如何实现多人线上协作的?
  14. PVR个人视频录像机 - XBMC 12.0(Frodo)新功能
  15. 漫话:如何给女朋友解释什么是CDN?
  16. 几种闪存技术:eMMC、UFS2.1、UFS3.0、SSD
  17. 软件设计七大原则实战(二)-开闭原则
  18. 计算机考研复试会问什么专业问题,跨专业考研复试会问哪些问题
  19. VUE写一个顶部导航栏
  20. 【17ce】运维站点监测和测速网站

热门文章

  1. 迈足狂奔!铁塔公司:目前北京已建好4400多座大型5G基站
  2. 一加7 Pro在京东开启预约:人数超34万
  3. 从苹果换回安卓是什么体验?
  4. 大家一起看广告?微信朋友圈广告@好友评论互动功能全量开放
  5. 三个常用c++11特性
  6. robotac属于a类还是b类_工程项目分类A类、B类、C类、D类项目是指什么?注意:不是资料的A、B、C类报建资料...
  7. python清空集合_python集合的操作
  8. 摄像头图像分析目标物体大小位置_对智能驾驶系统三种环境传感器布局的冗余关系分析...
  9. ffmpeg 2.6.3在Windows系统MinGW的编译
  10. oracle的sqlload遇到超长,oracle sqlload