1、        异常概念

1.1   异常的继承体系

异常的根类:java.lang.Throwable,其下有两个子类:

Java.lang.Error

Java.util.Exception      这个就是我们平常说的异常

Exception:是指程序在执行过程中或编译过程中出现了问题,导致了JVM的停止。异常产生后程序员可以通过代码方法纠正,使程序继续运行。

Error:严重错误,无法通过处理的错误。

错误出现了,一般都是改代码。异常出现了,可以处理也可以不处理。

Throwable中打印异常常用方法:

public void printStackTrace()    //将此throwable和其追溯打印到标准错误流。

 

1.2   异常分类

l  编译时异常:checked异常。在编译时期,就会检查。如果没有处理异常,则编译失败。(如日期格式化异常)

l  运行时异常:runtime异常。在运行时,检查异常。在编译时期,运行时异常不会被编译器检测(如数学异常)

2、异常处理

2.1 JVM处理

把异常的名称、原因、位置等信息输出在控制台,并结束程序的运行。

注意:异常一旦发生其后来的代码不会继续执行。

2.2手动处理

l  抛出处理:将问题标识出来,报告给调用者。

l  捕获处理:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。

2.2.1 捕获处理格式

try{

编写可能出现异常的代码

}

catch(异常类型 e){

处理异常的代码

//记录日志、打印异常信息、继续抛出异常

}

try代码块:

···             a)存放可能出现异常的代码块,只要有一行出现一行,后面的语句将不会执行。

b)try代码块内只会出现一个异常

catch代码块:

a)出现了异常之后要执行的代码,如果try代码块的代码没有出现异常,则catch模块不会执行

b)异常出现后,最多只有一个catch语句执行。

C)子类异常要求在父类异常上面处理

l  finally代码块的作用:

try、catch之后,都会执行的代码。只要进入了try,都会执行finally里面的语句。

作用:不管是否出异常,最后一定要执行的操作,一般用于释放资源。

2.2.2抛出处理

l  throw关键字:将异常对象抛出,抛给方法调用者,并结束当前方法的运行。

l  throws关键字:用来声明异常,将异常标识处理告诉方法调用者该方法可能会出现异常有哪些。

a)throw和throws关键字的使用格式:

throw关键字:throw new 异常类名(“异常信息”)

throws关键字:修饰符 返回值类型 方法名() throws 异常类名1, 2, ,3 …n

b)throw和throws关键字的使用格式:

throw关键字:用在方法体内

throws关键字:用在方法声明上

3.编译时异常和运行时异常

l  编译时异常:除了运行时异常的异常都是编译时异常

l  运行时异常:只要是RunTimeException类及其子类都属于运行时异常

3.1编译时异常特点:

方法体中抛出的异常如果是编译时异常,则要求必须处理。

方法声明上抛出的异常如果是编译时异常,则要求方法调用者必须要处理。

3.2运行时异常特点:

方法体中抛出的异常如果是编译时异常,可以处理也可以不处理。

方法声明上抛出的异常如果是编译时异常,方法调用者可以处理也可以不处理。

3.3 为什么运行时异常不一定需要处理,是一个宽松管理规范?

运行时异常可以通过程序员的良好编程习惯来避免,所以不要求一定要处理异常。

4.多线程

4.1 进程、线程的概念

什么是进程

正在运行中的程序就是一个进程。

什么是线程

线程是进程中的一个独立的执行路径。

l  进程和线程的关系:

工厂:可以比喻为进程。

工人:可以比喻为线程。

4.2进程、线程的作用

进程的作用

用来封装线程的,为线程执行任务(代码)提供资源(内存空间)

每一个进程之间的内存空间是独立的,互不干扰

线程的作用:

用来执行代码

并行、并发的作用

并行:同一个时间点执行
并发:同一个时间段执行

4.3 Thread类概述

一个该类的对象就代表一个线程对象(相当于一个工人)

4.3.1创建线程的方式:
       创建一个类继承Thread类

重写run方法:将线程任务写在run()方法体内

调用start()方法,开启线程干活

4.3.2继承Thread类创建多线程的例子:

package com.yangzhihui.level03.test02;

 

import java.util.Random;

 

public class ThreadDemo {

    public
static void main(String[] args) {

        MyThread
myThread01 = new MyThread("
线程1:");

        MyThread
myThread02 = new MyThread("
线程2:");

       
myThread01.start();

       
myThread02.start();

    }

}

 

class MyThread extends Thread {

    public
MyThread(String name) {

       
super(name);

    }

 

    @Override

    public void
run() {

        Random
random = new Random();

 

        int sum
= 0;

        for (int
i = 0; i < 30; i++) {

            int
num;

            num
= random.nextInt(901) + 100;

            sum
+= num;

           
System.out.println(Thread.currentThread().getName() + num);

        }

 

       
System.out.println("10
个100~1000随机数的和是:" + Thread.currentThread().getName() + sum);

    }

}

day005-异常的更多相关文章

  1. alias导致virtualenv异常的分析和解法

    title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...

  2. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

  3. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  4. 使用JSONObject.fromObject的时候出现“There is a cycle in the hierarchy”异常 的解决办法

    在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常.   意思是出现了死循环,也就是Model之间有循环包含关系: ...

  5. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 后台创建了一个DntHub的集线器 前台在调用的时候出现了问题(经检查是代理对象 ...

  6. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  7. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  8. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  9. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  10. 基于AOP的MVC拦截异常让代码更优美

    与asp.net 打交道很多年,如今天微软的优秀框架越来越多,其中微软在基于mvc的思想架构,也推出了自己的一套asp.net mvc 框架,如果你亲身体验过它,会情不自禁的说‘漂亮’.回过头来,‘漂 ...

随机推荐

  1. CH2401 送礼物 双向搜索

    双向搜索:把前一半的可行状态搜出来,然后sort+unique,之后搜后一半时,结束时二分一下前一半的答案,拼出一个与W尽量接近的ans来更新 ps:距LYD说前一半取n/2+2时跑的最快...不知, ...

  2. 1076 Wifi密码 (15 分)

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...

  3. 【总结】MYSQL注入

    关于MYSQL注入的总结,网上的资料很多,这里和大家简单分享下自己实战中常用的思路和命令 0x00   UNION联合查询型注入常用语句 order by n //定字段,n为正整数 union se ...

  4. PIE SDK创建掩膜

      1.算法功能简介 图像掩膜(Mask)用选定的图像.图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程.掩膜是一种图像滤镜的模板,实用掩膜经常处理的是遥感图像.当提取道 ...

  5. 红米note_维修_开机键

    1. 2.在线人工客服(20180919) 很荣幸为您服务,有什么问题可以帮助到您的- 我的手机 后边的 开机键 貌似 不太行了 您好,您是哪款手机 就是 要按 好几次 很用力 才能 开亮手机屏幕木 ...

  6. Linux 运维之硬链接与软链接详解

    了解这个的时候不如先知道下文件吧. 我们知道文件都有文件名与数据,但是呢这个在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata). 用户数据,即文件数据块 ...

  7. shell的常用脚本一

    批量创建用户名脚本: ######################################################################### # File Name: cr ...

  8. 利用paramiko的demo_simple.py进行日志记录时遇到的特殊字符

    特殊字符列表: 回车 "\r" "\x13" 响铃 "\x07" 换行 "\n" "\x10" &q ...

  9. MySQL之基本语句

    SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据库中,MySQL正是其中最杰出的代表,MySQL是由三个瑞典人于20世 ...

  10. [转](.NET Core C#) AES Encryption

    本文转自:https://www.example-code.com/dotnet-core/crypt2_aes.asp Chilkat.Crypt2 crypt = new Chilkat.Cryp ...