多執行緒的異常處理

2022-07-01 04:51:13 字數 3909 閱讀 4600

1. 

#

-*- coding: utf-8 -*-

defget_multithreading_res(executor,fun_name,arg_list):

i = 1/0

return

list(executor.map(fun_name, arg_list))

deftask_func(i):

try:

if i == 'a'

: i = i/0

return

if i == 'b'

:

return

if i == 'c'

:

return

except

exception as e:

return

deff1():

#1.thread_arg

thread_arg=['

a','

b','c'

]

try:

#2.提交多執行緒

multithread_res_list =get_multithreading_res(settings.common_executor, task_func, thread_arg)

print('

multithread_res_list

',multithread_res_list)

#3.判斷結果:

for i_thread_res in

multithread_res_list:

if i_thread_res['

status

'] ==1:

print('

返回成功

',i_thread_res)

elif i_thread_res['

status

'] ==0:

print('

返回失敗

',i_thread_res)

else

:

print('

呼叫task_func有異常

', i_thread_res['

msg'

])

except

exception as e:

print('

執行f1函式發生異常:%s

2.任務函式不做異常處理,出異常後,多執行緒中斷:

#

-*- coding: utf-8 -*-

defget_multithreading_res(executor,fun_name,arg_list):

return

list(executor.map(fun_name, arg_list))

deftask_func(i):

if i == 'a'

: i = i/0

return

if i == 'b'

:

return

if i == 'c'

:

return

deff1():

#1.thread_arg

thread_arg=['

a','

b','c'

]

try:

#2.提交多執行緒

multithread_res_list =get_multithreading_res(settings.common_executor, task_func, thread_arg)

print('

multithread_res_list

',multithread_res_list)

#3.判斷結果:

for i_thread_res in

multithread_res_list:

if i_thread_res['

status

'] ==1:

print('

返回成功

',i_thread_res)

elif i_thread_res['

status

'] ==0:

print('

返回失敗

',i_thread_res)

else

:

print('

呼叫task_func有異常

', i_thread_res['

msg'

])

except

exception as e:

print('

執行f1函式發生異常:%s

#2.提交多執行緒

multithread_res_list =get_multithreading_res(settings.common_executor, task_func, thread_arg)

print('

multithread_res_list

',multithread_res_list)

#3.判斷結果:

for i_thread_res in

multithread_res_list:

if i_thread_res['

status

'] ==1:

print('

返回成功

',i_thread_res)

elif i_thread_res['

status

'] ==0:

print('

返回失敗

',i_thread_res)

else

:

print('

呼叫task_func有異常

', i_thread_res['

msg'

])

except

exception as e:

print('

執行f1函式發生異常:%s

C 中多執行緒異常的處理

在建立多執行緒的時候,啟動多執行緒時候使用try catch捕獲不多異常。需要在主程式的地方加上異常處理方法。處理未捕獲的異常 處理ui執行緒異常 處理非ui執行緒異常 region 處理未捕獲異常的掛鉤函式 n異常訊息 n異常位置 n error.gettype name,error.messag...

C 多執行緒中的異常處理

使用thread建立的子執行緒,需要在委託中捕捉,無法在上下文執行緒中捕捉 static void main string args static void dowork catch exception ex 1.仍然可以在委託中捕獲異常 2.可以捕獲task.wait 或者 task.result...

C std thread 多執行緒中的異常處理

環境 vs2019 包含標頭檔案 include include include 執行緒函式採用trycatch 機制 如果需要在主線程檢測子執行緒的異常時,採用全域性變數的方式獲取 std exception ptr ptr void f0 str.at 2 越界訪問 throw std exce...