JAVA之旅(十一)——RuntimeException,异常的总结,Package,jar包,多程序概述


继续JAVA之旅

一.RuntimeException

在Exception种有一个特殊的子类异常RuntimeException,翻译过来就是运行异常,如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过,如果在函数上声明了该异常,调用者可以不用处理,编译一样通过

之所以不用函数声明,是因为不需要让调用调用者处理,当然该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止运行后,对代码进行修正

在自定义异常时,如果该类发生,无法继续进行运算,就让自定义异常继承RuntimeException

这个没什么好讲的,我们了解一下就可以了。

异常还是博大精深的,但是我们没有必要在这里耗费这么多时间,我就用一个总结篇来直接总结了

二.异常的总结

异常:

是什么?是对问题的描述,将问题进行对象的封装,

异常体系:

Throwable

| - Error

| - Exception

| - | - RuntimeException

异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性,也就是说可以被Throw和Throws所操作。只有异常体系具备这一特点

Throw和Throws的特点,Throw定义在函数内,用于抛出异常对象,Throws定义在函数上,用于抛出异常类,可以爬出多个用逗号隔开

当函数内容有throw抛出异常对象,并未进行try处理,必须要在函数上声明,不然会编译失败,注意,RuntimeException除外,也就是说,函数内如果抛出RuntimeException异常,函数上可以不用声明

如果函数声明了异常,调用者需要进行处理,处理方式可以throw可以try。

异常有两种

  • 一种是编译时被检测异常

    • 该异常在编译时,如果没有处理(没有抛没有try),编译失败
    • 该异常被标识,代表着可以被处理
  • 运行时异常(编译时不检查)
    • 在编译时,不需要处理,编译器不检查
    • 该异常的发生,建议不处理,让程序停止,需要对代码进行修正

异常处理的语句

    try {
            //需要被检测代码
        } catch (Exception e) {
            // 处理异常的代码
        }finally{
            //一定会执行的代码
        }

finally我们没讲,就是最终的意思,注意

  • 1.finally中定义的通常是关闭资源代码,因为资源必须释放
  • 2.finally只有一种情况不会执行,当执行到system.exit(0);

自定义异常:自定义内集成Ecception或者RuntimeException

    1. 为了让该类具备可抛性
  • 2.让该类具备操作异常的共性方法

当腰定义自定义异常的父类已经定义好的功能,将异常传递给父类的构造方法

自定义异常时按照JAVA的面向对象思想将程序中出现的特有出现问题进行封装。

异常的好处

    1. 将问题进行封装
  • 2.将正常流程代码和问题处理代码相分离,方便阅读

异常的处理原则

  • 1.处理方式有两种 : try和throws
  • 2.调用的抛出异常的功能时,抛出几个,就处理几个
    • 一个try对应多个catch
  • 3.多个catch,父类的catch放在最下面
  • 4.catch需要定义针对性的处理方式,不要简单的定义输出语句
    • 当捕获到的异常,本功能处理不了时,可以继续在catch中抛出

如果该异常处理不了,但并不属于该功能出现的异常,可以将异常转换后,在抛出和该功能相关的异常

或者异常可以处理每当需要异常产生的和本功能相关的问题提供出去,当调用着知道,并处理,也可以将捕获的异常处理后,转换成新的异常

异常的注意事项:

在子类覆盖时

  • 1.子类抛出的异常必须是父类的异常和子类或者子集
  • 2.如果父类或者接口没有抛异常,子类覆盖出现异常,只能try不能抛

三.Package

Package是什么?我们先来看看概念

  • 对类文件进行分类管理
  • 对类提供多层命名空间
  • 写在程序文件的第一行
  • 类名的全称是包名.类名
  • 包也是一种封装形式

我们看一下写法

package com.lgl.hellojava;

//公共的   类   类名
public class HelloJJAVA {

    public static void main(String[] args) {

    }

}

这里有个关键字就是package

这个着实没什么可说的,但是有一点,包和包的类是怎么访问的?很明显你导包,IDE可以帮你完成,那自己怎么去实现呢?

package com.lgl.hellojava;

import com.lgl.hello.Test;

//公共的   类   类名
public class HelloJJAVA {

    public static void main(String[] args) {

        Test s = new Test();
        s.show();
    }

}

导入包名类即可

四.jar

一个有意思的概念,jar’

  • JAVA的压缩包

    • 方便项目的携带
    • 方便与使用,只要在classpath配置路径即可
    • 数据库驱动,SSH框架等都是jar的体现

要是我们的IDE的话可以直接导出jar,我们也可以在cmd中实现,你可以直接输入jar

人家连实例都有

命令什么的都是OK的

五.多线程的概述

在JAVA中,线程,是一门很大的学问,本篇快要结尾了,所以我这里就写一点点东西,我们要了解多线成,首先就要了解线程,但是说线程之前,我们要说一个进程

进程是什么?进程就是正在运行的程序,我们可以打开window的任务管理器

这就是进程,而线程,是进程中的内容,一个进程中至少有一个线程,我们叫他为主线程,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫控制单元,线程就是进程中的一个独立的控制单元,线程在控制的进程的执行

JAVA JVM 启动的时候会有一个进程 java.exe

该进程至少中至少一个线程负责java程序的执行,而且这个线程运行的代码存在于main方法,该线程就是主线程

而一个进程里面有多个线程就叫多线程

而我们更细节说明虚拟机,JVM启动不止一个线程,还有负责垃圾回收机制的线程,他本身就是一个多线程

那大家知道多线程存在的意义是什么吗?

这个我们留着下个章节来剖析,本篇就先到这里

欢迎加入群555974449一起交流

JAVA之旅(十一)——RuntimeException,异常的总结,Package,jar包,多线程概述的更多相关文章

  1. Java 测试连接Oracle数据库是否成功,ojdbc7.jar包下载

    需要用到的jar 包: 链接:https://pan.baidu.com/s/1I1pC2f81IvbphZ6tWpVFOg 密码:uq0u 测试结果: package pkg; import jav ...

  2. java 面向对象(十一):关键字:package/import

    1.1 使用说明: * 1.为了更好的实现项目中类的管理,提供包的概念 * 2.使用package声明类或接口所属的包,声明在源文件的首行 * 3.包,属于标识符,遵循标识符的命名规则.规范(xxxy ...

  3. java生成二维码(需导入第三方ZXing.jar包)

    //这个类是用来解析,通过图片解析该图片的网页链接是什么 package util; import java.awt.Graphics2D;import java.awt.geom.AffineTra ...

  4. Java classpath 如何自动添加web-content /lib下的jar包

    右键属性--Java build path--Libraries--add library--Web app libraries -- next --next -- ok

  5. [19/04/20-星期六] Java的动态性_字节码操作(Javassist类库(jar包),assist:帮助、援助)

    一.概念 [基本] /** * */ package cn.sxt.jvm; import javassist.ClassPool; import javassist.CtClass; import ...

  6. Java zxing生成二维码所需的jar包

    免费的,不需要积分. 共有2个jar包, 链接: https://pan.baidu.com/s/1QJcEkRQOp1NdrNAgGC6LvQ 密码: 4524

  7. 处理异常json串的jar包JsonSerde

    参考下面文章: https://blog.csdn.net/SunnyYoona/article/details/70170173

  8. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  9. Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...

随机推荐

  1. Git 中 SSH key 生成步骤

    由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key. 第1步:创建SSH Key.在windows下 ...

  2. AIX 命令

    1,[ctrl]+h 删除命令 2, set -o emacs后: [ctrl]+p 看上条命令 [ctrl]+n 看下条命令 两次[esc] 自动补全 3, set -o vi 后,可以按照vi编辑 ...

  3. xshell连接centos与ubuntu

    操作系统:Windows 7 应用软件:Ware Workstation &Xshell 5 Linux:CentOS 7 Minimal &Ubuntu Server 16 ==== ...

  4. 使用WeihanLi.Redis操作Redis

    WeihanLi.Redis Intro StackExchange.Redis 扩展,更简单的泛型操作,并提供一些的适用于业务场景中的扩展 基于 Redis 的五种数据类型扩展出了一些应用: Str ...

  5. Bootstrap3 表单-水平排列的表单

    通过为表单添加 .form-horizontal 类,并联合使用 Bootstrap 预置的栅格类,可以将 label 标签和控件组水平并排布局.这样做将改变 .form-group 的行为,使其表现 ...

  6. Bootstrap3 排版-对齐

    通过文本对齐类,可以简单方便的将文字重新对齐. Left aligned text. Center aligned text. Right aligned text. Justified text. ...

  7. PHP Ajax JavaScript 实现 无刷新附件上传

    普通表单 前端页面 后台处理 带有文件的表单 刷新方式 前端界面 后台页面 无刷新方式 大文件上传 POST极值 upload极值 上传细节 前端页面 后台处理 总结 对一个网站而言,有一个基本的不可 ...

  8. springmvc的介绍和第一个例子

    SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...

  9. 反射模拟DbUtils实现ResultSet转成Bean实例

    前几天接触到了apache的一个小框架DbUtils,真的被其优雅的设计所震撼到了,尤其是其中的 MyBean mybean = QueryRunner.query(sqlConnection,sql ...

  10. 编译GDAL支持OpenCL使用GPU加速

    前言 GDAL库中提供的gdalwarp支持各种高性能的图像重采样算法,图像重采样算法广泛应用于图像校正,重投影,裁切,镶嵌等算法中,而且对于这些算法来说,计算坐标变换的运算量是相当少的,绝大部分运算 ...