Problema SD.begin per datalogger

Non credo di aver capito bene, provo a spiegarmi.. forse ho capito male ma quello che lei dice essere quello che non dovrebbe succedere è esattamente quello che voglio; ossia che finchè la SD è assente il programma rimanga in quel ciclo e tenga acceso il led (questo è dovuto al fatto che quando estraggo la SD per il downloadg il programma non prosegua alla scrittura nel caso fosse il momento, ma aspettasse "morto" in quel ciclo). La mia domanda era proprio perchè, pur essendo presente la SD, la funzione SD.begin non ritorni TRUE e il programma avanzi regolarmente con il loop?

Chiedo scusa se sbaglio io, ma non risco a capire perchè un if sia logicamente diverso da un while, in teoria in entrambi i casi il programma dovrebbe andare avanti in caso di TRUE solo che nel mio caso ciò che rigira ogni volta è un ciclo while, mentre mettendo l'if a riciclare sarebbe tutta la parte loop.