Size: a a a

2020 November 05

AV

Alexander Vershilov in Haskell
Я так в alphasheets напоролся у меня было аккуратное использование SomeAsyncException
источник

AV

Alexander Vershilov in Haskell
Потом коллеги притащили safe-exceptions, типа хорошо и безопасно
источник

AV

Alexander Vershilov in Haskell
Косяки долго выпиливали
источник

KV

Kirill Valyavin in Haskell
Оно ваще ловит асинхронные? Я думал, там вся суть в том, что не ловит
источник

MK

Maxim Koltsov in Haskell
Alexander Vershilov
Я так в alphasheets напоролся у меня было аккуратное использование SomeAsyncException
нечего умничать просто
источник

AV

Alexander Vershilov in Haskell
Kirill Valyavin
Оно ваще ловит асинхронные? Я думал, там вся суть в том, что не ловит
Она не ловит, но определяет как-то не очень адекватно
источник

AV

Alexander Vershilov in Haskell
Maxim Koltsov
нечего умничать просто
Не умничать а делать хорошо, пока библиотеку ещё не изобрели
источник

KV

Kirill Valyavin in Haskell
case ... of SomeAsyncException
как ещё-то
источник

AV

Alexander Vershilov in Haskell
.. fromAsyncException, надеюсь всё же
источник

AV

Alexander Vershilov in Haskell
fromSomeAsyncException
источник

AV

Alexander Vershilov in Haskell
Переслано от Alexander Vershilov
> All these functions except for catchAsync will not attempt to catch exceptions thrown asynchronously (again, more on that in the chapter on concurrency).

это не правда
источник

AV

Alexander Vershilov in Haskell
Переслано от Alexander Vershilov
./1
user error (foo)

import Control.Concurrent
import Control.Exception as Raw
import Control.Exception.Safe as Safe
import Foreign.StablePtr

main = do
 m <- myThreadId
 lock <- newEmptyMVar
 _ <- newStablePtr lock
 Safe.catch
  (do forkIO $ Raw.throwTo m (userError "foo")
      takeMVar lock)
  (\e -> print (e::SomeException))
источник

AV

Alexander Vershilov in Haskell
Переслано от Alexander Vershilov
Как видишь catch радостно словило асинхронное исключение и ничего не сказало
источник

AV

Alexander Vershilov in Haskell
Переслано от Alexander Vershilov
А вот AsyncException всегда считается асинхронным, даже если брошено синхронно
источник

KV

Kirill Valyavin in Haskell
В хаскеле есть способ отличить способ, которым эксепшен был кинут?
источник

AV

Alexander Vershilov in Haskell
Нет, к сожалению
источник

AV

Alexander Vershilov in Haskell
SomeAsyncException для этого и завели
источник

KV

Kirill Valyavin in Haskell
Ну вот это сейф-эксепшонс и проверяет
источник

AV

Alexander Vershilov in Haskell
И safe-exceptions абосолютно правильно в него заворачивает и использует
источник

AV

Alexander Vershilov in Haskell
Но
источник