Java安全漏洞排查:FastJSON 1.2.37 autoType风险实录与升级Fastjson2完整方案
2026/10/18 15:24:10
# 错误:代码本身有语法错误,解释器无法执行代码。无法通过异常处理机制解决。# 异常:代码在语法上没问题,但执行过程中出现了问题。可以通过异常处理机制解决。# 常见异常# 1.ZeroDivisionError:除数为零num1=199num2=0result1=num1/num2print('result1:',result1)# 2.TypeError:数据类型错误num1=199num2='100'result2=num1+num2print('result2:',result2)# 3. AttributeError:属性错误## 3.1 示例1classPerson:def__init__(self,name,age):self.name=name self.age=age p1=Person('张三',18)print('p1.name:',p1.name)print('p1.age:',p1.age)print('p1.gender:',p1.gender)## 3.2 示例2nums=[10,30,40]nums.add(60)# 4. IndexError:索引错误nums=[10,20,30,40]print('nums[4]:',nums[4])# 5. NameError:名称错误print('name:',name)# 6 KeyError:键错误dict1={'a':1,'b':2,'c':3}print(dict1['d'])# 错误:Key KeyError: 'd'# 7. ValueError:值错误num1=int('hello')print('num1:',num1)try中,出现异常后的处理代码写在except中。try中的代码出现异常,那try中的后续代码不会执行,并自动跳转到except中。try中的代码没有异常,那except中的代码就不会执行。try-except后面的代码都会继续执行。except捕获到Python中所有的异常 。实际开发中不推荐这样做。print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))result=a/bprint(f'{a}/{b}={result}')print('try结束')except:print('except结束')print('程序结束')print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))result=a/bprint(f'{a}/{b}={result}')print('try结束')exceptZeroDivisionError:print('除数不能为0')exceptValueError:print('输入的不是数字')print('程序结束')print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))result=a/bprint(f'{a}/{b}={result}')print('try结束')exceptException:# 除0异常匹配到这个异常print('程序异常')exceptZeroDivisionError:# 这个异常就不会触发print('除数不能为0')exceptValueError:print('输入的不是数字')print('程序结束')print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))print(x)result=a/bprint(f'{a}/{b}={result}')print('try结束')exceptZeroDivisionError:# 这个异常就不会触发print('除数不能为0')exceptValueError:print('输入的不是数字')exceptExceptionase:# 除0异常匹配到这个异常print('程序异常:',e)print('异常类型:',type(e))print('异常参数:',e.args)print('异常文件:',e.__traceback__.tb_frame.f_code.co_filename)print('异常行号:',e.__traceback__.tb_lineno)importtracebackprint('traceback.format_exc: ',traceback.format_exc())print('程序结束')print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))result=a/bprint(f'{a}/{b}={result}')print('try结束')except(ZeroDivisionError,ValueError,Exception)ase:ifisinstance(e,ZeroDivisionError):print('除数不能为0')elifisinstance(e,ValueError):print('输入的不是数字')else:print('程序异常:',e)print('程序结束')try:尝试去做可能会出现异常的事情。except:出现异常时的处理(出现异常时怎么补救)。else:如果一切顺利(没有异常出现)要做的事。finall:无论有没有异常,都要做的事。# 1.try:尝试去做可能会出现异常的事情。# 2.except:出现异常时的处理(出现异常时怎么补救)。# 3.else:如果一切顺利(没有异常出现)要做的事。# 4.finall:无论有没有异常,都要做的事。print('这是一个简单的加法计算器')try:a=int(input('请输入第一个数字: '))b=int(input('请输入第二个数字: '))result=a/bprint(f'{a}/{b}={result}')print('try结束')except(ZeroDivisionError,ValueError,Exception)ase:ifisinstance(e,ZeroDivisionError):print('除数不能为0')elifisinstance(e,ValueError):print('输入的不是数字')else:print('程序异常:',e)else:print('try中代码没有任何异常')finally:print('finally结束')print('程序结束')# 当程序遇到不符合预期情况时,可以使用raise语句手动触发(抛出)异常。try:age=int(input("请输入年龄:"))if18<=age<=120:print('成年')elif0<=age<18:print('未成年')else:# 抛出异常,触发异常处理机制raiseValueError("年龄必须在0到120之间")exceptExceptionase:print(f'输入错误:{e}')# 如果异常没有被当前代码块所捕获处理,那该异常就会沿着调用链,逐层传递给其调用者。# 如果所有调用者,都没有捕获该异常,那最终程序将因【未处理异常】而意外终止。deftest1():print('***********test1开始************')result='100'+2print('***********test1结束************')deftest2():print('***********test2开始************')test1()print('***********test2结束************')deftest3():print('***********test3开始************')try:test2()exceptExceptionase:print(f'异常信息:{e}')print('***********test3结束************')test3()# 由开发人员自己定义一个异常类,用来表示代码中“更具体、更有业务含义”的异常。# 具体规则:定义一个类(类名通常以Error结尾),继承Exception类或它的子类。classSchoolNameError(Exception):def__init__(self,msg):super().__init__('【校名异常】'+msg)defcheck_school_name(name):iflen(name)>10:raiseSchoolNameError('学校名过长')else:print('学校名是合法的')try:check_school_name('ShaanXi University')exceptSchoolNameErrorase:print(f'程序异常:{e}')