Não estou conseguindo importar SenderIdInvalidException, estou fazendo igual ao professor e não sei onde está dando error.
Não estou conseguindo importar SenderIdInvalidException, estou fazendo igual ao professor e não sei onde está dando error.
Olá Cleber!
Nesse caso, gostaria de testar o seu código, através da imagem, não observei erro. Para que eu possa fornecer uma resposta mais assertiva. Compartilhe o seu código e o link da aula em que você está, por favor.
Agradeço desde já!
Fico no aguardo e a disposição!
O link da aula... https://cursos.alura.com.br/course/dart-lidando-exceptions-null-safety/task/108741
não sei se estou passando da maneira certa, mas copiei tudo:
código1:
class SenderIdInvalidException implements Exception{
String idSender;
SenderIdInvalidException({required this.idSender});
}
class ReceiverIdInvalidException implements Exception{}
class SenderNotAuthenticatedException implements Exception{}
class SenderBalanceLawerThanAmountException implements Exception{}
código2:
import '../models/account.dart';
import '../exceptions/bank_controller_exceptions.dart';
class BankController {
final Map<String, Account> _database = {};
addAccount({required String id, required Account account}) {
_database[id] = account;
}
bool makeTransfer(
{required String idSender,
required String idReceiver,
required double amount}) {
// Verificar se ID de remetente é válido
if (!verifyId(idSender)) {
throw SenderIdInvalidException(idSender: idSender);
}
// Verificar se ID de destinatário é válido
if (!verifyId(idReceiver)) {
throw ReceiverIdInvalidException();
}
Account accountSender = _database[idSender]!;
Account accountReceiver = _database[idReceiver]!;
// Verificar se o remetente está autenticado
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
// Verificar se o remetente possui saldo suficiente
if (accountSender.balance < amount) {
throw SenderBalanceLawerThanAmountException();
}
// Se tudo estiver certo, efetivar transação
accountSender.balance -= amount;
accountReceiver.balance += amount;
return true;
}
bool verifyId(String id) {
return _database.containsKey(id);
}
}
codigo 3:
import 'dart:io';
import 'dart:math';
import 'controllers/bank_controller.dart';
import 'models/account.dart';
void main() {
// Criando o banco
BankController bankController = BankController();
// Adicionando contas
bankController.addAccount(
id: "Ricarth",
account:
Account(name: "Ricarth Lima", balance: 400, isAuthenticated: true));
bankController.addAccount(
id: "Kako",
account:
Account(name: "Caio Couto", balance: 600, isAuthenticated: true));
// Fazendo transferência
try{
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
} on Sed
// Observando resultado
print(result);
}
O códigoi 2 ficou confuso, ve se está melhor :
import '../models/account.dart';
import '../exceptions/bank_controller_exceptions.dart';
class BankController {
final Map<String, Account> _database = {};
addAccount({required String id, required Account account}) {
_database[id] = account;
}
bool makeTransfer(
{required String idSender,
required String idReceiver,
required double amount}) {
// Verificar se ID de remetente é válido
if (!verifyId(idSender)) {
throw SenderIdInvalidException(idSender: idSender);
}
// Verificar se ID de destinatário é válido
if (!verifyId(idReceiver)) {
throw ReceiverIdInvalidException();
}
Account accountSender = _database[idSender]!;
Account accountReceiver = _database[idReceiver]!;
// Verificar se o remetente está autenticado
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
// Verificar se o remetente possui saldo suficiente
if (accountSender.balance < amount) {
throw SenderBalanceLawerThanAmountException();
}
// Se tudo estiver certo, efetivar transação
accountSender.balance -= amount;
accountReceiver.balance += amount;
return true;
}
bool verifyId(String id) {
return _database.containsKey(id);
}
}
Olá Cleber, tudo bem contigo?
Observei alguns pequenos erros no seu código e acredito que os reparando, vai dar certo.
O erro provavelmente está aqui no arquivo 2 (BankController), na parte onde você verifica se o remetente está autenticado:
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException();
}
O correto seria:
if (!accountSender.isAuthenticated) {
throw SenderIdInvalidException(idSender: idSender);
}
Isso porque SenderIdInvalidException
requer um parâmetro obrigatório idSender
, então lançar essa exceção sem um argumento gera erro.
Outro possível erro está no arquivo 3 (main.dart). A instrução try
foi iniciada, mas o bloco on
está incompleto:
try{
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
} on Sed
Aqui parece que você começou a escrever SenderIdInvalidException
, mas não concluiu. O correto seria algo assim:
try {
bool result = bankController.makeTransfer(
idSender: "Kako222", idReceiver: "Ricarth", amount: 50);
print(result);
} on SenderIdInvalidException catch (e) {
print("O ID '${e.idSender}' não é um ID válido.");
}
Por favor, verifique esses pontos, em caso de persistência, vou pedir para subir o seu código no GitHub e me enviar o link:
Estou à disposição para seu rápido retorno aos estudos.
Espero ter ajudado! Bons estudos!
Sucesso ✨
Oi, professor. Obrigado por ter respondido, isto resolveu o problema em parte. Eu coloquei o Sen (esqueci de explicar) justamente pq quando coloco o Sen (não chama). Nem se colocar todo o código, como mostro aqui (abaixo no print). De repente é mais simples que subir o código no GitHub:
Ve se o senhor consegue acessar o meu projeto: https://github.com/berquo44/684572
Desculpe a demora, só tive tempo de responde e agradecer a equipe, pois estava em transito, só consegui acessar agora.
Espero que resolva.
Muito obrigado!
Joguei o GitHub par ver se está correto. Mais uma vez obrigado pelo suporte!