バグ:「冒険の再開」で不正なパーティデータがあると開発者エラー

Issue #1071 new
暗黒 騎士 created an issue

ツイッター上でPyの白帯開発者エラーが出ている方をみかけたのですが、「別宿からキャラクターを移動させようとしたりバックアップを上書きしてそうなった(ので報告はしにくい」というようなご意向でした。

しかし開発者エラーがでているのに放っておくのもなと思い、自分で試したところ、「Party」内の「○○一行」フォルダを別宿にコピーして「冒険の再開」をすることで恐らく同等のエラーが出るのがわかりました。

単純なバックアップの上書きとかで発生するケースがあるかは微妙なところですが、シナリオの読み込みに失敗した場合のような扱いにした方が安全かと思いますので課題を作っておきます。


Version : 5.0 Beta 4 (64-bit) / 2021-10-30 18:47:32
DateTime: 2022-01-13 22:04:53
Traceback (most recent call last):
File ".\cw\thread.py", line 981, in run
File ".\cw\thread.py", line 1034, in _run
File ".\cw\thread.py", line 1050, in main_loop
File ".\cw\eventhandler.py", line 131, in run
File ".\cw\eventhandler.py", line 857, in executing_event
File ".\cw\thread.py", line 5105, in load_party
File ".\cw\data.py", line 3102, in load_party
File ".\cw\data.py", line 4193, in init
File ".\cw\data.py", line 4230, in _init
File ".\cw\data.py", line 4230, in <listcomp>
File ".\cw\data.py", line 5219, in yadoxml2etree
File ".\cw\data.py", line 5243, in yadoxml2element
ValueError: Yado/検証宿/Adventurer/&quot;.xml is not found.

Comments (1)

  1. k4nagatsuki repo owner

    ご報告ありがとうございます。

    パーティ情報だけあってパーティメンバーのデータが存在しないケースですね。この手のエラーにどこまで対処するかはちょっと難しい問題です。

    例えば今回のケースでは、たまたま同じファイル名の別のキャラクターが存在する宿にパーティデータをコピーするとエラーにならず正常に読み込めてしまい、にもかかわらず内容がおかしいという事になりえます。

    半端にエラーを繕おうとする事で、宿フォルダ内のデータを外から操作して問題が起きてもエラーで教えてくれるから大丈夫というような情報が出回ってしまうと余計な事故を招きかねません。

    そもそもユーザ操作を前提としているシナリオの配置と違い、宿フォルダはユーザが安全に操作できるものではありません(安全に操作できるところとできないところがあるという齟齬も問題で、シナリオ・スキンのインストールや移動などの機能はその辺を埋めるための試みです)。

    そして仰るように、検知可能・修復可能なエラーには対応した方がよくその方が安全、というのもまた正論です。

    この問題は悩ましいです。落としどころとしては、エラーを出しつつ「安全に操作はできないので触るな」というように警告するといったところかなぁと思います。

  2. Log in to comment