throws

JUC(二)——深入理解锁机制

懵懂的女人 提交于 2019-12-19 12:59:23
对于锁大家肯定都不陌生,锁分为synchronize和lock 但是大家是否知道锁到底锁住的是什么呢? 接下来我们举几个例子来了解锁(这里使用synchronize来演示) 1、该代码先打印的是短信还是邮件? class Phone { public synchronized void sendSMS ( ) throws Exception { System . out . println ( "------短信" ) ; } public synchronized void sendEmail ( ) throws Exception { System . out . println ( "------邮件" ) ; } public void getHello ( ) { System . out . println ( "------hello" ) ; } } public class Lock { public static void main ( String [ ] args ) throws Exception { Phone phone = new Phone ( ) ; new Thread ( ( ) - > { try { phone . sendSMS ( ) ; } catch ( Exception e ) { e . printStackTrace

Java异常处理机制 —— 深入理解与开发应用

筅森魡賤 提交于 2019-12-19 07:48:56
   本文为原创博文,转载请注明出处,侵权必究!   Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try、catch、finally、throw、throws,以及各种各样的Exception。本篇文章主要在基础的使用方法上,进一步分析在开发中如何使用异常机制更合理。 try-catch-finally     try-catch-finally块的用法比较简单,使用频次也最高。try块中包含可能出现异常的语句(当然这是人为决定的,try理论上可以包含任何代码),catch块负责捕获可能出现的异常,finally负责执行必须执行的语句,这里的代码不论是否发生了异常,都会被执行。     针对这部分,因为很基础,所以就提几点比较关键的建议:       1、当你在写try-catch语句的时候,脑子里是知道自己要去针对哪种异常进行处理的,不要只是以防万一,加了个catch(Exception e),这是毫无意义的。并且,一个try块中可能有多个异常,对于每一类异常,要分别写一个catch进行捕获。              2、针对可能出现异常的语句进行try-catch,大段代码的try-catch会非常不利于维护代码时定位异常可能发生的位置,对于肯定不会发生异常的稳定的代码,不需要放在try块中。       3、try-catch虽然在功能上

java之异常

限于喜欢 提交于 2019-12-19 04:47:14
(1)任何一种程序设计语言设计的程序在运行时都可能出现错误。 (2)捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生。 (3)对于这些错误,一般有两种解决方法: 遇到错误就终止程序运行; 由 程序员 在编写程序时,就考虑到可能出现的错误,并进行错误的检测、错误的提示以及错误的处理; 那么什么是编译,什么是运行呢? 编译 :又分为编译和链接两个过程。编译是将源文件转换为机器可识别的二进制文件。链接是将这些二进制文件组合成系统可以执行的可执行文件。 运行 :将编译出来的可执行程序放在系统中进行运行。 Java异常 :在 java 语言中,将程序执行中发生的不正常情况称为异常。 java中的异常用于处理非预期的情况,如文件没找到、网络错误、非法的参数等。 java程序运行过程中的异常可分为两类 : Error: JVM 系统内部错误、资源耗尽等严重情况; Exception:其它因编程原因或偶然的外在因素导致的一致性问题,例如空指针访问、试图读取不存在的文件、网络连接中断等。 异常处理机制 : 在编写程序时,经常要在可能出错误的地方加上检测的代码; java异常处理:java采用异常处理机制,将异常处理的程序代码集中在一起,与正常的程序代码分开,是的程序简洁,并利于维护; 说明 : java提供的是异常处理的抓跑模型; java程序的执行过程中若果出现异常

Java学习笔记40(缓冲流)

我怕爱的太早我们不能终老 提交于 2019-12-18 09:10:44
缓冲流: 在读写文件的各种流中,最令人烦恼的就是效率问题, 而缓冲流的目的就是提高读写效率 字节输出缓冲流: package demo; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; //提高写入效率 public class BufferedOutputStreamDemo { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("d:\\buffer.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos); bos.write(66); byte[] bytes = "HelloWorld".getBytes(); bos.write(bytes); bos.close(); } } 字节输入缓冲流: package demo; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io

黑马程序员-Java基础之异常

こ雲淡風輕ζ 提交于 2019-12-18 03:30:11
异 常 :就是不正常。程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。 出现的问题有很多种,比如角标越界,空指针等都是。就对这些问题进行分类。而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。形成了 异常体系 。 --------java.lang.Throwable : Throwable : 可抛出的。 |--Error : 错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正。 |--Exception : 异常,可以有针对性的处理方式 无论是错误还是异常,它们都有具体的子类体现每一个问题,它们的子类都有一个共性,就是都 以父类名才作为子类的后缀名 。 这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。 可抛性的体现: 就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。 ------------------------------------------------------

Java throw throws try...catch区别

橙三吉。 提交于 2019-12-17 07:19:37
java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块。接下来我们挨个看看这几个的作用。 1.throw throw 就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理 class A{ public void func() throws Exception{ throw new Exception(); } } 这里抛出了一个Exception,Exception是throwable的子类,是所有异常的基类。与此同时,throwable还有另一个子类,也就是Error。 这里会把Exception这个引用抛到外部环境中去处理。 2.throws 那我们就不得不说一下throws,其实throws并不是抛出一个实际的Exception而是一个异常声明,它声明这个方法可能会抛出一个异常,注意是可能,所以在没有异常的情况下也是可以用throws的,而throws本身的作用也是用来提高程序的健壮性,反过来,如果这个方法的的确确的有一个异常,那么编译器会强制让你加上throws这个异常声明。 通常throws是写在参数列表的后面,这样就表明这个方法有可能会抛出一个异常 class A{ public void func() throws

Exception handling : throw, throws and Throwable

我的未来我决定 提交于 2019-12-17 02:28:49
问题 Can any of you explain what the differences are between throw , throws and Throwable and when to use which? 回答1: throws : Used when writing methods, to declare that the method in question throws the specified (checked) exception. As opposed to checked exceptions, runtime exceptions (NullPointerExceptions etc) may be thrown without having the method declare throws NullPointerException . throw : Instruction to actually throw the exception. (Or more specifically, the Throwable ). The throw

JAVA-基础-缓冲流

断了今生、忘了曾经 提交于 2019-12-16 17:11:19
Java中提高了一套缓冲流,它的存在,可提高IO流的读写速度 缓冲流,根据流的分类分类字节缓冲流与字符缓冲流。 字节缓冲流 字节缓冲流根据流的方向,共有2个 写入数据到流中,字节缓冲输出流 BufferedOutputStream 读取流中的数据,字节缓冲输入流 BufferedInputStream 字节缓冲输出流BufferedOutputStream 通过字节缓冲流,进行文件的读写操作 写数据到文件的操作 构造方法 public BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度 public class BufferedOutputStreamDemo01 { public static void main(String[] args) throws IOException { //写数据到文件的方法 write(); } /* * 写数据到文件的方法 * 1,创建流 * 2,写数据 * 3,关闭流 */ private static void write() throws IOException { //创建基本的字节输出流 FileOutputStream fileOut = new FileOutputStream

深入理解 Java 异常

喜欢而已 提交于 2019-12-16 16:36:46
📓 本文已归档到:「 javacore 」 🔁 本文中的示例代码已归档到:「 javacore 」 1. 异常框架 1.1. Throwable Throwable 是 Java 语言中所有错误( Error )和异常( Exception )的超类。 Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。 主要方法: fillInStackTrace - 用当前的调用栈层次填充 Throwable 对象栈层次,添加到栈层次任何先前信息中。 getMessage - 返回关于发生的异常的详细信息。这个消息在 Throwable 类的构造函数中初始化了。 getCause - 返回一个 Throwable 对象代表异常原因。 getStackTrace - 返回一个包含堆栈层次的数组。下标为 0 的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。 printStackTrace - 打印 toString() 结果和栈层次到 System.err ,即错误输出流。 toString - 使用 getMessage 的结果返回代表 Throwable 对象的字符串。 1.2. Error Error 是 Throwable 的一个子类。 Error 表示合理的应用程序不应该尝试捕获的严重问题

Java异常

无人久伴 提交于 2019-12-16 11:04:35
一、异常? 程序的运行过程中所发生的不正常事件 ,如所需文件找不到、网络连接不能或连接中断、算术运算出错( 如被零除 )、数组下标越界、装载一个不存在的类、对 null 对象操作、类型转换异常等。异常会中断正在运行的程序。 二、Java 异常体系结构 所有异常都是 Throwable 类的子类 ,它派生了两个类: Error 类 和 Exception 类 。 注:在进行程序设计时,应该更关注 Exception 类 2.1 Error 类: 表示仅靠 程序本身无法恢复的严重错误 ,如内存溢出、动态链接失败、虚拟机错误。应用程序不应该抛出这种类型的错误( 一般由虚拟机抛出 )。假如出现这种错误,应尽力使程序安全退出。 2.2 Exception 类: 由 Java 应用程序 抛出和处理的 非严重错误 ,如所需文件找不到、网络连接不通或连接中断、算术运算出错( 如被零除 )、数组下标越界、装载一个不存在的类、对 null 对象操作、类型转换异常等。它的各种不同的子类分别对应不同类型的异常。 2.3 Exception 可分为两大类异常 运行时异常 :包括 RuntimeException 及其所有子类。不要求程序必须对它们进行处理。 Checked 异常( 非运行时异常 ) :除了运行时异常外的其他从 Exception 类继承来的异常类。 三、常见的异常类 常见的异常类 异常 说明