تایپ Either و Try دو روش متفاوت برای مدیریت خطا ها در اسکالا به روش فانکشنال هستند.
در Try دو زیر تایپ Failure و Success داریم.کدی که باعث ایجاد exception میشه در Failure قرار می گیره.
parser(input) match {
case Failure(exception) => s" ${exception.message}"
case Success(result) => do something
}
در کد بالا اگر ورودی معتبر بود عملیات مربوط به Success انجام می شود.اما اگر ایجاد خطا کنه Failure اجرا می شه.
در Either عملیات نامعتبر exception ایجاد نمی کند اما می خواهیم اون رو مدیریت کنیم.فرض کنید یک رشته json رو پردازش کنیم.در بعضی کتابخانه ها مثل GSON اگر مقدار فیلد Null بود خطایی پرتاب نمی کنه پس باید راهی باشه این مقادیر از بقیه جدا کنیم و بعد مدیریت کنیم.از Either استفاده می کنیم.مقادیر درست در Right و نامطلوب در Left می ریزیم.
def validate(name: String): Either[String, String] = {
if (name.isnull) Left("null")
else Right(name)
}
validate(name) match {
case Left(error) => do something
case Right(result) => s"Validation succeeded: $result"
}