Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: errorToMessageの文面をいい感じにし、テストも追加する #2556

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Hiroshiba
Copy link
Member

@Hiroshiba Hiroshiba commented Feb 23, 2025

内容

#1086 (comment) で考えたことを実装してみました。
ダイアログでそのままメッセージを表示することを前提に、errorToMessageを少しいい感じにしています。

例えばnew Error("エラーメッセージはあれこれです")を突っ込むと文字列は
エラーメッセージはあれこれです
になります。

例えばnew AggregateError[Error("エラーメッセージ1"), Error("エラーメッセージ2")]を突っ込むと文字列は

エラーメッセージ1
エラーメッセージ2

になります。

たぶんPromise.allSettledの結果を良い感じにエラーハンドリングできる関数を用意しておけば更に便利なはず。
エラーメッセージをちゃんと整えれば。

関連 Issue

ref #1086

その他

@sevenc-nanashi さんがdiscordで言ってたDisplayableErrorは一旦無しにして、ダイアログを表示しないといけないとこはどんなエラーが来てもダイアログを表示する感じはどうかなぁと。
実装したほうが良さそうだったらちょっと検討します。

@voicevox-preview-pages
Copy link

voicevox-preview-pages bot commented Feb 23, 2025

🚀 プレビュー用ページを作成しました 🚀

更新時点でのコミットハッシュ:2298e9f

@Hiroshiba
Copy link
Member Author

electronのプロセス間通信時のエラーはmessageのみがデシリアライズされるので、causeやAggregateErrorは無効になることがわかりました 😇
https://www.electronjs.org/ja/docs/latest/tutorial/ipc#1-ipcmainhandle-%E3%81%A7%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E3%83%AA%E3%83%83%E3%82%B9%E3%83%B3%E3%81%99%E3%82%8B

ipcMain.handleでawaitしてthrowし直す手があるけど、こうするとエラーメッセージの1行目に勝手にメッセージが追加されるっぽいです。。。
こんな感じで Error invoking remote method というメッセージが追加される。うーーーーーーーーーん。。。

Error invoking remote method 'INSTALL_VVPP_ENGINE': Error: /Users/kazuyuki_hiroshiba/Downloads/melt-UST.vvpp をインストールできませんでした。

@Hiroshiba Hiroshiba force-pushed the chore--errorToMessageの文面をいい感じにし、テストも追加する branch from 6c7682c to 2298e9f Compare February 23, 2025 11:17
@Hiroshiba
Copy link
Member Author

@sevenc-nanashi さんと相談し、一度オブジェクトにくるんでelectronのIPC通信を越える案で行けそうな感じになりました!
https://discord.com/channels/879570910208733277/893889888208977960/1343168623769813094

であればこのプルリクエストは結構効果的だと思うので、PRにする方針で進めていこうと思います。
結構いくつかのコミットが進まないと意義がわからない寄りなので、別PRも用意します。

@Hiroshiba
Copy link
Member Author

実際にinstallVvppEngineで使ってみた感じまあいい感じな気がしたのでOpenにします!

まあ、エラーの詳細がユーザーにちょっとわかりにくい形で伝わってくることもあるので、良いのかダメなのか若干判断しづらいですが。。。

例:

VVPP [path] のインストールに失敗しました。

↓がこういうエラーになったりする

VVPP [path] のインストールに失敗しました。
ENOENT: file not found "engine_manifest.json"

@Hiroshiba Hiroshiba marked this pull request as ready for review February 24, 2025 09:44
@Hiroshiba Hiroshiba requested a review from a team as a code owner February 24, 2025 09:44
@sevenc-nanashi
Copy link
Member

sevenc-nanashi commented Feb 24, 2025

DisplayableError

どちらかといえば、DisplayableErrorはmessageをそのままにしてそれ以外は「内部メッセージ:{...}」みたいに意図していないことをわかりやすくするみたいなイメージですね。

まぁどちらでも良さそう。

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Feb 24, 2025

どちらかといえば、DisplayableErrorはmessageをそのままにしてそれ以外は「内部メッセージ:{...}」みたいに意図していないことをわかりやすくするみたいなイメージですね。

なるほどです、たしかに分けるの良いかもですね!
もしやるとすると「内部メッセージ」だとユーザーにとって結局わかりづらいから、わかりやすい提示方法・webフロントダイアログの実装・electronダイアログでの実装・causeで再帰的にDisplayableErrorが続く場合・causeがDisplayableErrorだった場合などどうするかまで含めて考える必要がありそう。

@Hiroshiba
Copy link
Member Author

Hiroshiba commented Feb 24, 2025

@sevenc-nanashi ちょっと一旦DisplayableErrorは実装がややこしいから置いといてErrorだけで運用してみて、やっぱりエラーメッセージが分かりづらいとなったら再考するとかでどうでしょう?

@sevenc-nanashi
Copy link
Member

ならひとまずそれで良さそう。

@Hiroshiba Hiroshiba requested review from sevenc-nanashi and removed request for sevenc-nanashi February 24, 2025 09:58
@Hiroshiba
Copy link
Member Author

DisplayableErrorを使うべきか考えてたのですが、使ったほうが良いなと思い始めました。

(内部エラーメッセージ)みたいな行のあとにメッセージを続ける形が良さそう。
実装もerrorToMessageに内部エラーメッセージかどうかフラグを持たせればできそうな予感。

内部エラーメッセージはそもそも見せないべきなのではとも考えてました。
見せないべきだと思いますが、エラーレポートを開発者側が見れる体制が整ってない現状は見せても良いと思いました。
より良くしたいなら、内部エラーメッセージは見せず、Sentryでのエラー収集か、エラーログをサクッと送れる仕組みがあるべき。

ちょっとDisplayableErrorを実装して、別PRを出してみようと思います。
一旦draftにします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants