-
Notifications
You must be signed in to change notification settings - Fork 54
python异常处理
ChannelCMT edited this page Jun 3, 2019
·
1 revision
第几行?
什么错?
怎么改?
price = 1
if price>0:
print ('True')
print (price is greater than 0)
else:
print "False"
File "<ipython-input-1-1d2f1bbcc104>", line 4
print (price is greater than 0)
^
SyntaxError: invalid syntax
以上报错代码显示第四行出现语法错误,是缩进错误。
price=1
if price>0:
print ('True')
print ('price is greater than 0')
else:
print "False"
File "<ipython-input-2-cf69990590e3>", line 6
print "False"
^
SyntaxError: Missing parentheses in call to 'print'
以上报错代码显示第六行出现语法错误,是少了括号。
price=1
if price>0:
print ('True')
print ('price is greater than 0')
else:
print ("False")
True
price is greater than 0
以上是正确修改后的代码,无需所有缩进都对齐,只需同级对齐。
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try:
正常的操作
......................
except:
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
# 定义函数
def test_price(price):
return int(price)
# 调用函数
test_price("z66")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-3de6ec1555dc> in <module>()
3 return int(price)
4 # 调用函数
----> 5 test_price("z66")
<ipython-input-6-3de6ec1555dc> in test_price(price)
1 # 定义函数
2 def test_price(price):
----> 3 return int(price)
4 # 调用函数
5 test_price("z66")
ValueError: invalid literal for int() with base 10: 'z66'
# 定义函数
def test_price(price):
try:
p = int(price)
except ValueError:
print ("参数不是数字")
else:
print(p+100)
finally:
print('Go on')
# 调用函数
test_price("z66")
参数不是数字
Go on
def check_price(price):
if price < 0:
raise Exception("Invalid price!", price)
# 触发异常后,后面的代码就不会再执行
try:
check_price(-1)
print('right')
##触发异常
except Exception as e:
print (e)
else:
print ('can_trade')
('Invalid price!', -1)
SyntaxError Python | 语法错误
TypeError | 对类型无效的操作
NameError | 未声明/初始化对象 (没有属性)
ValueError | 传入无效的参数
ImportError | 导入模块/对象失败
-
python基础
-
python进阶
-
数据格式处理
-
数据计算与展示
-
因子横截面排序分析
-
信号时间序列分析
-
CTA策略类型
-
附录:因子算法