死亡笔记3--异常 网络编程详解

异常和网络编程的知识点


异常:
(1)程序出现的不正常的情况
(2)异常的体系:
throwable
|--Error 严重问题,我们不处理
|--Exception
           |--RuntimeException  运行期异常,我们需要修正代码
|--非RuntiomeException 编译器异常,必须处理,否则编译不通过
异常分为: 异常和错误  
异常的处理:
JVM的默认处理:
把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续执行了.
自己处理:
A:try...catch...finally
自己编写处理代码,后面的程序可以继续执行
B:throws
把自己处理不了的,在方法上生命,告诉调用者,这里有问题(尽量不要再main方法上抛出异常)
面试题:


A:编译期异常和运行期异常的区别?
编译期异常 必须要处理的,否则编译不通过
运行期异常 可以不处理,也可以处理


B:throw和throws的区别?


throw:在方法体中,后面跟的是异常对象名,并且只能是一个
throw抛出的是一个异常对象,说明这里肯定有一个异常产生了  eg:throw new ArithmeticException();


throws:在方法声明上,后面跟的是异常的类名,可以是多个
throws是声明方法有异常,是一种可能性,这个异常并不一定会产生


finally关键字及其面试题:
(1)finally用于释放资源,它的代码永远会执行.特殊情况:在执行到finally之前jvm虚拟机退出了


(2)final,finally,finalize的区别?
final:最终的意思,是一个关键字,可以修饰类,类的成员变量,类的成员方法
修饰类,类不能被继承
修饰方法,方法不能被重写
修饰变量,变量是常量,只能被赋值一次


finally:是异常处理的一部分,用于释放资源释放资源,一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm虚拟机退出了


finalize:是Object类的一个方法,用于垃圾回收


(3)如果catch里面有return语句,请问finally里面的代码还会执行吗?
如果会,请问在return前面还是后面执行?


会执行,在前面.




网络编程:
IP地址:网络中计算机的唯一标识
"点分十进制" 用点来分开的十进制数据
两个DOS命令:ipconfig 查看本机的IP地址
ping+ip 测试本机与指定ip地址间是否有问题
ping+自己ip:检查自己的本机网络环境是否有问题


127.0.0.1,本机ip,回环地址


x.x.x.255 广播地址
x.x.x.0 网络地址


如果一个类没有构造方法:
A:
成员全部是静态的(Math,Arrays,Collections)


B:
单例设计模式(Runtime)


C:
类中有静态方法返回该类的对象(InetAddress)
(这个不属于单例设计模式,每一次调用getXxx()都会产生一个新的对象)


端口号:
正在进行的程序标识


有效端口:0-65535,其中0-1024系统使用或保留端口


360--流量防火墙--网络连接--查看软件端口号


协议:
UDP:把数据打包
数据有限制(64K/包)
不建立连接
速度快
不可靠
TCP(三次握手协议):建立连接通道
 数据无限制
 速度慢
 可靠
举例:UDP 群发信息
TCp 打电话


Socket:网络套接字
Socket编程--网络编程--套接字编程


Socket包含了:IP地址+端口号


Socket原理机制:
通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket键通过IO传输

UDP协议发送数据:
创建发送端Socket对象
穿件数据,并把数据打包
调用Socket对象的发送方式发送数据包
释放资源
代码演示:
public static void main(String[] args) throws IOException{
DatagramSocket ds=new DatagramSocket();
byte[] bys="helloworld".getBytes();
DatagramPacket dp=new DatagramPacket(bys,bys.length,
InetAddress.getByName("192.168.17.41"),33333);
ds.send(dp);
ds.close();
}
UDP协议接受数据:
创建接受端Socket对象
创建一个数据包(接受容器)
调用Socket对象的接受方法接受数据
解析数据包,并显示在控制台
释放资源
代码演示:
public static void main(String[] args) throws IOException{
DatagramSocket ds=new DatagramSocket(33333);
byte[] bys=new byte[1024];
DatagramPacket dp=new DatagramPacket(bys,bys.length);
ds.receive(dp);
//解析数据包
String ip=dp.getAdress().getHostAdress();
String s=new String(dp.getData(),0,dp.getLength);
syso("from"+ip+"data is"+s);
ds.close();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值