ホーム » コンピュータ » Linux » Debian » 自作スクリプトのエラー対策 try-catch

システム

最近の投稿

アーカイブ

カテゴリー

自作スクリプトのエラー対策 try-catch

自宅で動かしているスクリプト、自前だから手抜きもあって、サーバトラブル時には他の機器が巻き込まれてエラーが増えることも多い。自室の homebridge などを動かしている Raspberry-Pi が暑さもあってか、再起動させたら一時的に気絶。復旧は問題なかったけど、気絶中に他の外気温測定のRaspberry-Pi がブローカーとなっている Raspberry-Pi が落ちているため、MQTT のデータ送信に失敗のエラーを出してる。

ちゃんと、connect で出るエラーを try-except で例外処理を追加した。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try :
client = mqtt.Client( ... )
client.connect( BROKER )
client.publish( ... )
except ValueError as err :
print( err )
except OSError as err :
print( err )
try : client = mqtt.Client( ... ) client.connect( BROKER ) client.publish( ... ) except ValueError as err : print( err ) except OSError as err : print( err )
try :
  client = mqtt.Client( ... )
  client.connect( BROKER )

  client.publish( ... )
except ValueError as err :
  print( err )
except OSError as err :
  print( err )

以前から、トラブル時にウザいのが、Perl で書かれた RSS 情報をまとめるスクリプト。Perl での try-catch もどきということで eval{} if ( $@ ) … でエラー対策してるつもりなんだけどトラブル時のエラーがうまく動いていないような。今回あらためて、Perl try-catch で検索したら、Perl 5.34 で try-catch が実験的にサポートされているらしいので使ってみた。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
use feature qw( try ) ;
no warnings "experimental::try" ;
:
try {
$feed->merge( $rss ) ;
} catch( $e ) {
print "catch $e" ;
}
# eval { $feed->merge( $rss ) ; } ;
# if ( $@ ) {
# warn "..." ;
# }
use feature qw( try ) ; no warnings "experimental::try" ; : try { $feed->merge( $rss ) ; } catch( $e ) { print "catch $e" ; } # eval { $feed->merge( $rss ) ; } ; # if ( $@ ) { # warn "..." ; # }
use feature qw( try ) ;
no warnings "experimental::try" ;
:
try {
  $feed->merge( $rss ) ;
} catch( $e ) {
  print "catch $e" ;
}
# eval { $feed->merge( $rss ) ; } ;
# if ( $@ ) {
#    warn "..." ;
# }

Google 検索

My Google   Yahoo

Microsoft

ファンサイト